数据库的MVCC模式

发布时间 2023-09-27 20:11:43作者: 饮冰而行
  1. PG的mvcc模式:多版本并发控制,通过在数据库中创建多个版本的数据来实现并发的读写操作。每个数据库事务都能够看到一个逻辑上一致的数据库快照,当一个事务修改了数据库中的数据时,他不会直接修改原始数据,而是创建一个新的数据版本,并将修改后的数据写入新的数据版本中,这样其他事务依然可以读取到旧的数据版本,不会被修改的事务所影响。 通过mvcc,pg可以并发的处理多个读写操作而不会发生冲突。当事务提交时,它的修改才会对其他事物可见。
  2. mysql的mvcc:在mysql中通过两个关键数据结构来实现:

    A:undo Log(回滚日志):记录事务对数据的修改操作,在事务回滚时用于撤销已提交的修改。

    B:Read View(读视图):每个事务开始时生成,用于控制每个事务能够看到数据版本。读视图用于记录事务开始时提交事务的ID,设置事务只能看到对应的数据版本。

总而言之,言而总之,就两句话:

  读操作不会阻塞读操作:允许多个事务同时读取数据。

  写操作不会阻塞读操作:读取未提交的数据副本,不必等到事务的提交操作。