mvcc【上】 学习

2019-06-16 12:08:33 浏览数 (1)

mvcc的目的主要是避免对读操作加锁,以实现非阻塞读。 mvcc有两种实现:

  1. 乐观并发控制
  2. 悲观并发控制

mvcc在select、insert、delete、update下都有与系统版本号有关的行为,从而使得读操作不用加锁,且只会读到符合标准的行;但是会增加额外的存储空间,需要更多维护工作。 它只在RC、RR下工作,RU每次只读最新的行,SR则对所有读取的行加锁。 在RR模式下:

  • 对于普通select,不加锁,使用mvcc机制实现快照读
  • 对于select for update、update等,使用行级锁、gap lock、next-key lock防止脏读、不可重复读、幻读。

0 人点赞