MySQL 排它锁和共享锁的区别
1. 流程表格
步骤 | 操作 |
---|---|
1 | 开启事务 |
2 | 查询数据并加锁 |
3 | 对数据进行操作 |
4 | 提交事务或回滚事务 |
5 | 释放锁 |
2. 操作步骤及代码示例
1. 开启事务
-- 开启事务
START TRANSACTION;
2. 查询数据并加锁
-- 排它锁
SELECT * FROM table_name WHERE key_column = value FOR UPDATE;
-- 共享锁
SELECT * FROM table_name WHERE key_column = value LOCK IN SHARE MODE;
3. 对数据进行操作
在获取锁以后,可以对数据进行修改或查询操作。
4. 提交事务或回滚事务
-- 提交事务
COMMIT;
-- 回滚事务
ROLLBACK;
5. 释放锁
在事务结束后,锁会自动释放。
关系图
erDiagram
CUSTOMER ||--o| ORDER : has
ORDER ||--| ORDER_DETAIL : include
ORDER_DETAIL ||--| PRODUCT : include
序列图
sequenceDiagram
participant Client
participant Server
Client->>Server: 发起查询请求
Server->>Server: 查询数据并加锁
Server->>Server: 返回数据
Client->>Server: 对数据进行操作
Client->>Server: 提交事务或回滚事务
Server->>Server: 释放锁
通过以上步骤及示例代码,你应该能够理解 MySQL 排它锁和共享锁的区别了。排它锁用于写操作,防止其他事务对数据进行修改,而共享锁用于读操作,可以允许多个事务同时读取同一份数据。希望对你有所帮助!