1.MVCC模型图形说明
传统模式:
类似悲观锁,并发效率低下。
MVCC处理模式:
加版本,单个写操作会将数据复制一份新的版本,不会阻塞,并发效率高。
pgsql事务隔离性就是通过上图的数据的多版本来保证。
MVCC老版本数据处理:
每张表都有 free space map,它记录文件存储的可用空间情况。FSM 不是很准确,因为它以8KB来计算,并且不是实时更新的,它是由 VACUUM 更新的。在 MVCC 情况下,update 和 delete 后,旧的数据快照不会立即删除,VACUUM会释放空间以重用或还给操作系统。
3.预写日志WAL
1.在更新数据前,把操作的信息及数据以日志的形式写到磁盘。
2.只有日志实际写到硬盘后,数据才会被认为是安全的。
3.当数据没有被写到磁盘时,系统崩溃,日志重做更新数据,保证事物原子性。