数据库隔离级别和多版本并发控制(MVCC)

406 阅读1分钟

1. MySQL

参考:juejin.cn/post/684490…

1.1 隔离级别

理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以继续访问这个数据。但是这样子的话对性能影响太大,所以设计数据库的大叔提出了各种隔离级别,来最大限度的提升系统并发处理事务的能力,但是这也是以牺牲一定的隔离性来达到的

  • READ UNCOMMITTED(读未提交/脏读):
    一个事务读到了另一个未提交事务修改过的数据
  • READ COMMITTED (不可重复读):
    一个事务只能读到另一个已经提交的事务修改过的数据,并且其他事务每对该数据进行一次修改并提交后,该事务都能查询得到最新值,那么这种隔离级别就称之为不可重复读
  • REPEATABLE READ(可重复度):
    一个事务只能读到另一个已经提交的事务修改过的数据,但是第一次读过某条记录后,即使其他事务修改了该记录的值并且提交,该事务之后再读该条记录时,读到的仍是第一次读到的值,而不是每次都读到不同的数据