MySQL中如何实现事务隔离级别

  1. 读未提交:不加任何锁
  2. 读已提交:一般也不加锁,每次读取都会获取最新的数据版本,通过MVCC确保读到的是已提交的数据版本
  3. 可重复读:通过MVCC保证同一事务内的多次读取结果一致,同时通过 行锁 + 间隙锁 (Gap Lock) 避免幻读
    • 行锁:锁定具体的数据行,防止其他事务修改已存在的记录。
    • 间隙锁:锁定索引范围,防止其他事务在间隙中插入新记录。
  4. 串行化:对所有读取的数据加上范围锁,确保事务串行执行
    • 对读取的数据加共享锁,读取时其他事务不允许修改
    • 对写入的数据加排他锁,写入时其他事务不允许读取和修改
    • 强制事务串行执行