PostgreSQL数据库管理:集群技术与备份恢复
1. PostgreSQL系统列与MVCC机制
1.1 系统列查询
在PostgreSQL中,我们可以通过查询系统列 ctid
来确定每个元组的位置。示例代码如下:
postgres=# select xmin, xmax, ctid, * from foo.bar ;
xmin | xmax | ctid | id | name
-------+-------+-------+----+------
11705 | 0 | (0,1) | 1 | avi
11705 | 0 | (0,2) | 2 | avi
11705 | 0 | (0,3) | 3 | avi
11705 | 0 | (0,4) | 4 | avi
11705 | 0 | (0,5) | 5 | avi
11905 | 11911 | (0,6) | 6 | avi
(6 rows)
创建表时,我们以为只有定义的列,但实际上PostgreSQL会自动创建一些额外的隐藏列。这些隐藏列虽在 select * from table
中不显示,但可以在 SELECT
语句中单独指定来查看其值。
1.2 重要系统列详解
1.2.1 tableoid
在了解 tableoid
之前,需要先明白OID(Object Identif