悲观锁乐观锁定义 关于mySql中乐观锁与读已提交(事务隔离级别)的搭配使用问题!求大神带飞?
浏览量:2695
时间:2021-03-16 12:41:07
作者:admin
关于mySql中乐观锁与读已提交(事务隔离级别)的搭配使用问题!求大神带飞?
在read uncommitted级别,事务中的更改(即使未提交)对其他事务也是可见的。事务可以读取未提交的数据,这也可以称为脏读。这个水平实际上会导致很多问题。就性能而言,uncommitted read并不比其他级别好多少,但它缺乏其他级别的优点,除非它确实是必要的,而且通常不会在实践中使用。
MySQL有一个多版本控制mvcc,可以看作是行级锁的一个变种,但是在很多情况下避免了锁,所以成本更低。Mvcc实际上是乐观并发控制,它是通过在每行记录后面保存两个隐藏列来实现的。一个是创建时间,另一个是删除时间。当然,实际存储不是时间值,而是版本号。
Mvcc仅在可重复读取和读取提交级别工作,其他隔离级别与Mvcc不兼容,因为读取未提交总是读取最新数据,而不是与当前事务版本匹配的数据行。
综上所述,乐观锁可以与read submitted结合使用
mvcc现在已经在主流数据库中使用。使用RR隔离级别后,将不会出现虚读。
根据不同的材料,RR是199X的ANSI SQL标准,但真正的数据库不一定符合标准(事实上,最好没有虚读)。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。