PHP实战中知识总结 / PgSQL - 事务状态记录-Commit Log (clog)
PostgreSQL 使用 Commit Log,亦称 clog 来存放事务的状态;clog 存放于 Shared Memory 中,在整个事务处理的生命周期中都起到了重要的作用。PostgreSQL 定义了四种不同的事务状态:IN_PROGRESS, COMMITTED, ABORTED, 以及 SUB_COMMITTED。
clog在共享内存中包含一个或多个8KB的页面。clog在逻辑上是一个数组,数组的索引对应于各自的事务id,数组中的每个项都保存着相应事务id的状态。
当关闭PG或checkpoint时,clog会被写入pg_xact目录,文件命名 0000, 0001, 一个文件最大 256 KB;
在启动PG时,会加载clog文件;
在vacuum时,会清理不需要的clog;
(1)T1:txid 200;txid 200的状态从进行中更改为已提交。
(2)T2:TXId201中止;txid 201的状态从进行中更改为中止。