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 排它锁和共享锁的区别了。排它锁用于写操作,防止其他事务对数据进行修改,而共享锁用于读操作,可以允许多个事务同时读取同一份数据。希望对你有所帮助!