标准SQL事务隔离级别与Mysql事务隔离级别的区别与实现

  • 标准SQL的事务隔离级别
事务隔离级别脏读不可重复读幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)
  • Mysql 的事务隔离级别
事务隔离级别脏读不可重复读幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)

  • 标准SQL事务隔离级别的实现
事务隔离级别实现方式
读未提交(read-uncommitted)读不加锁、写加行级共享锁
不可重复读(read-committed)读加行级共享锁(读完马上释放)、写加行级排它锁
可重复读(repeatable-read)读加行级共享锁(等事务结束后释放)、写加行级排它锁
串行化(serializable)读加表级共享锁、写加表级排它锁
  • Mysql事务隔离级别的实现
事务隔离级别实现方式
读未提交(read-uncommitted)读不加锁、写加行级共享锁
不可重复读(read-committed)读采用 MVCC、写加行级排它锁
可重复读(repeatable-read)读采用 MVCC、写加行级排它锁或 gap lock 和 next-key lock
串行化(serializable)读加表级共享锁、写加表级排它锁

  • 由对比我们可以看出,Mysql 的 MVCC 解决了Mysql并发事务中不可重复读的问题
  • gap locknext-key lock 通过给间隙范围加锁解决了Mysql并发事务中幻读的问题
  • 与传统SQL标准不同 Mysql 的 不可重复读read-committed)通过使用MVCC解决了不可重复读的问题
  • 与传统SQL标准不同 Mysql 的 可重复读repeatable-read)通过使用MVCC解决了不可重复读的问题,通过行级排它锁或 gap locknext-key lock 解决了幻读的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值