Bootstrap

PostgreSQL事务处理机制

一、事务处理机制

事务是PostgreSQL中的基本工作单元,它是用户定义的一个数据库操作程序,这些操作要么全做、要么全部做,是一个不可分割的工作单位,事务的恢复及检查点保证了系统的完整和可恢复。

1. 事务的4个属性及相应的实现技术

在这里插入图片描述

2. MVCC简介

MVCC(Multiversion Concurrency Control) 即多版本并发控制,它可以避免读写事务之间的互相阻塞,相比通常的封锁技术可极大的提高业务的并发性能。

实现原理可简单概括如下:

  1. 数据文件中存放同一逻辑行的多个行版本(称为Tuple);
  2. 每个行版本的头部记录创建以及删除该行版本的事务的ID(分别称为 xmin 和 xmax );
  3. 每个事务的状态(运行中,中止或提交)记录在clog 文件中;
  4. 根据上面的数据并运用一定的规则每个事务只会看到一个特定的行版本。

通过 MVCC 读写事务可以分别在不同的行版本上工作,因此能够在互不冲突的情况下并发执行。

3. WAL简介

当系统意外宕机后,恢复时需要回退未完成事务所做的更改并确保已提交事务所作的更改均已生效。通过前面提到的 MVCC 很容易做到的第一点,只要把所有clog 文件中记录的所有“运行中”的事务的状态置为“中止”即可

;