重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 401|回复: 0
打印 上一主题 下一主题

PostgreSQL物理存储结构之表的Page内容分析

[复制链接]
跳转到指定楼层
楼主
发表于 2024-10-27 18:11:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 郑全 于 2024-10-27 18:19 编辑

在PG数据库中,数据被存储在数据文件里,数据文件内部被划分为固定长度的页(也叫做块)。可在编译数据库时通过–with-blocksize参数指定页的大小,页的默认大小为8K。每个表和索引都以固定尺寸的页数组存储。 在表中,所有页在逻辑上都相同,所以一个特定的行可以被存储在任何页里。 在索引里,第一个页通常保留为元页来保存控制信息, 并且依索引访问方法的不同,在索引里可能有不同类型的页。
本文主要介绍如何查看普通表的页内容。
表页的结构表页的结构图

                               
登录/注册后可看大图

表页内容
可以分为5个区域:
PageHeaderData:pgae头信息;占用空间大小为24bytes,用于记录page页的相关信息。后面会详细介绍Page头相关信息。
ItemIdData:行指针;每个指针占用空间大小为4bytes,用于指向一行数据的存放位置。它由三部分组成:
  • ​ lp_off:行数据相对于 Page 开始位置的偏移量;它只有15位,这就决定了PG数据库的块大小最大只能设置为32K。
  • ​ lp_flags:行指针的状态标志;共有4种状态:
  • ​ 0——LP_UNUSED:未使用状态,对应的 lp_len 总是为 0
  • ​ 1——NORMAL:已使用状态,指向正常状态的行,对应的 lp_len 总是大于 0
  • ​ 2——LP_REDIRECT:被HOT特性使用的重定向指针,对应的 lp_len 总是为 0
  • ​ 3——LP_DEAD:死亡状态,一般指指针指向的行已被更新或删除,等待vacuum清理
  • ​ lp_len:Items部分的实际长度
Free Space:空闲空间;page中的可用空间。新行的指针从这个区域的开头开始分配,新行的数据从这个区域的结尾开始分配。
Items:行数据;后面会介绍Items中记录的详细信息。
Special space:索引访问模式相关的数据。不同的索引访问方式存放不同的数据。在普通表中为空。
PageHeaderData
PageHeaderData中共包含8个标识:
pd_lsn:记录了最后更改Page内容的WAL 日志的 LSN号。xlogid:LSN的高32bit,xrecoff:LSN的低32bit。
pd_checksum:页面校验和,为0表示数据库未开启数据页校验和。
pd_flags:标志位,标识当前页面的存储情况。共32个标志位,目前只使用了3个:
  • 0x0001——PD_HAS_FREE_LINES:存在未使用的行指针。
  • 0x0002——PD_PAGE_FULL:页已写满。
  • 0x0004——PD_ALL_VISIBLE:页内所有行数据是够对所有事务可见。
  • 这三个标志位可叠加记录:比如pd_flags值为0x0005,表示页内存在未使用的行指针,并且页内所有行数据也是够对所有事务可见。
pd_lower:空闲空间开头位置在页中的偏移量,向页中插入行数据时,会从此位置开始向后分配新的行指针占用的空间
pd_upper:空闲空间结尾位置在页中的偏移量,向页中插入行数据时,会从此位置开始向前分配新的行数据占用的空间
pd_special:特殊空间开头位置在页中的偏移量.索引相关数据的开始位置,在数据文件中为空(即 pd_special = )。主要针对不同索引。例如对于 B-TREE 索引,这个部分存放着索引的左右兄弟节点。
pd_pagesize_version:标识前8位记录页大小,后八8记录布局版本号信息。版本号信息解释如下:
  • 0:PostgreSQL 7.3 之前的版本号是 0
  • 1:代表PostgreSQL 7.3 ~ 7.4
  • 2:代表PostgreSQL 8.0
  • 3:代表PostgreSQL 8.1 ~ 8.2
  • 4:代表PostgreSQL 8.3 及以后版本
    pd_prune_xid:页面上最旧的XMAX值,如果没有则为0。如果该位置有值,说明当前Page中存在部分记录可以被vacuum回收。
Items
由一个定长的头部(23 个字节)、一个可选的空值位图加填充位、一个可选的对象 ID 域以及用户数据组成。
t_xmin:插入或者更新该行的事务ID标志
t_xmax:删除或者锁定该行的事务ID标志
t_field3:记录t_cid或t_xvac;
t_cid:如果这行在一个事务中被插入并删除,我们会存储一个复合的命令ID,可以映射到真实的CMIN, CMAX,但只能在原始后端中使用本地状态。
t_xvac:XVAC 只在老式的VACUUM FULL中设置,它没有任何的命令子结构,所以不需要CMIN,CMAX (这要求老式VACUUM FULL从不尝试移动CMIN,CMAX 依然有效的行,例如,正在插入或正在删除的行)
t_ctid:当前行的CTID或者指向更新后的行的CTID
t_infomask2:低11位用户标识列的数量,高5位用于HOT技术及元组可见性的标志位;
目前使用的标志位共3个:
  • ​ 0x2000——HEAP_KEYS_UPDATED:行数据被更新且列被修改了,或者行被删除了
  • ​ 0x4000——HEAP_HOT_UPDATED:行被以HOT方式更新了;
  • ​ 0x8000——HEAP_ONLY_TUPLE/HEAP_TUPLE_HAS_MATCH:HEAP_ONLY_TUPLE代表这是HOT行,HEAP_TUPLE_HAS_MATCH 是在 Hash Join 中临时使用的标志,只用于 Hash 表中的 tuple,且不需要可见性信息,所以我们可以用一个可见性标志覆盖他。
t_infomask:用于标识元组当前的状态。
目前使用的标志如下:
  • ​ 0x0001——HEAP_HASNULL:有包含null值的列
  • ​ 0x0002——HEAP_HASVARWIDTH:有变宽属性的列(varchar)
  • ​ 0x0004——HEAP_HASEXTERNAL:有存储在外部的列 (TOAST)
  • ​ 0x0008——HEAP_HASOID_OLD:有 OID 字段
  • ​ 0x0010——HEAP_XMAX_KEYSHR_LOCK: XMAX 具有 key-shared 锁
  • ​ 0x0020——HEAP_COMBOCID:t_field3的值是t_cid
  • ​ 0x0040——HEAP_XMAX_EXCL_LOCK:XMAX 具有 exclusive 锁
  • ​ 0x0080——HEAP_XMAX_LOCK_ONLY:如果 XMAX 域有效,那么仅仅是锁的拥有者
  • ​ 0x0100——HEAP_XMIN_COMMITTED:XMIN 对应的事务已经提交
  • ​ 0x0200——HEAP_XMIN_INVALID:XMIN 对应的事务无效或者已经被终止
  • ​ 0x0400——HEAP_XMAX_COMMITTED:XMAX 对应的事务已经提交
  • ​ 0x0800——HEAP_XMAX_INVALID:XMAX 对应的事务无效或者已经被终止了
  • ​ 0x1000——HEAP_XMAX_IS_MULTI:XMAX 对应的事务是一个多段事务 ID
  • ​ 0x2000——HEAP_UPDATED: 这是数据行被更新后的版本
  • ​ 0x4000——HEAP_MOVED_OFF:被 9.0 之前的 VACUUM FULL 命令移动到另外的地方了,为了兼容二进制程序升级而保留
  • ​ 0x8000——HEAP_MOVED_IN:被 9.0 之前的 VACUUM FULL 命令从别处移动过来的,也是为了兼容性而保留
还有4个复合状态:
  • ​ HEAP_XMAX_SHR_LOCK=HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_KEYSHR_LOCK
  • ​ HEAP_LOCK_MASK=HEAP_XMAX_SHR_LOCK|HEAP_XMAX_EXCL_LOCK|HEAP_XMAX_KEYSHR_LOCK
  • ​ HEAP_XMIN_FROZEN=HEAP_XMIN_COMMITTED|HEAP_XMIN_INVALID
  • ​ HEAP_MOVED=HEAP_MOVED_OFF| HEAP_MOVED_IN
t_hoff:指从items项的起始位置到用户数据实际所在位置的长度
null bitmap:当元组中存在空值时,会出现空值位图,每个字段占一位。
Padding space:填充位,将null bitmap补充到MAXALIGN的倍数,MAXALIGN的值一般为8。
oid:如果表启用了WITH OIDS选项,items中还会有一个4字节的OID记录。
Tuple data:行数据
查看页内容的工具pageinspect扩展安装pageinspect扩展
使用pageinspect扩展之前,需要在数据库中加载扩展
create extension pageinspect;
pageinspect扩展提供了很多查看页内容的相关函数,具体可参考文档:
https://www.postgresql.org/docs/13/pageinspect.html
使用举例
查看表t的第0号页的页头信息:
postgres=# select * from page_header(get_raw_page('t','main',0));    lsn     | checksum | flags | lower | upper | special | pagesize | version | prune_xid
------------+----------+-------+-------+-------+---------+----------+---------+-----------
1/51015D20 |    29528 |     1 |   776 |   792 |    8192 |     8192 |       4 |      1689(1 row)

查看表t的第0号页中行数据相关信息:
postgres=# SELECT * FROM heap_page_items(get_raw_page('t',0));
lp  | lp_off | lp_flags | lp_len | t_xmin | t_xmax | t_field3 | t_ctid  | t_infomask2 | t_infomask | t_hoff | t_bits | t_oid |           t_data
-----+--------+----------+--------+--------+--------+----------+---------+-------------+------------+--------+--------+-------+----------------------------   
1 |     16 |        2 |      0 |        |        |          |         |             |            |        |        |       |   
2 |    832 |        1 |     36 |   1685 |      0 |        0 | (0,2)   |           2 |       2050 |     24 |        |       | \x0f7570646174650030010000   
3 |   2032 |        1 |     36 |   1665 |      0 |        0 | (0,3)   |           2 |       2306 |     24 |        |       | \x0f757064617465002d010000   
4 |   8112 |        1 |     36 |   1655 |      0 |        0 | (0,4)   |           2 |       2306 |     24 |        |       | \x0f7570646174650058010000   
5 |   8072 |        1 |     36 |   1655 |      0 |        0 | (0,5)   |           2 |       2306 |     24 |        |       | \x0f7570646174650059010000   
6 |   8032 |        1 |     36 |   1655 |      0 |        0 | (0,6)   |           2 |       2306 |     24 |        |       | \x0f757064617465005a010000   
7 |   7992 |        1 |     36 |   1655 |      0 |        0 | (0,7)   |           2 |       2306 |     24 |        |       | \x0f757064617465005b010000   
8 |   7952 |        1 |     36 |   1655 |      0 |        0 | (0,8)   |           2 |       2306 |     24 |        |       | \x0f757064617465005c010000   
9 |   7912 |        1 |     36 |   1655 |      0 |        0 | (0,9)   |           2 |       2306 |     24 |        |       | \x0f757064617465005d010000  
10 |   7872 |        1 |     36 |   1655 |      0 |        0 | (0,10)  |           2 |       2306 |     24 |        |       | \x0f757064617465005e010000  
11 |   7832 |        1 |     36 |   1655 |      0 |        0 | (0,11)  |           2 |       2306 |     24 |        |       | \x0f757064617465005f010000  
12 |   7792 |        1 |     36 |   1655 |      0 |        0 | (0,12)  |           2 |       2306 |     24 |        |       | \x0f7570646174650060010000  
13 |   7752 |        1 |     36 |   1655 |      0 |        0 | (0,13)  |           2 |       2306 |     24 |        |       | \x0f7570646174650061010000  
14 |   7712 |        1 |     36 |   1655 |      0 |        0 | (0,14)  |           2 |       2306 |     24 |        |       | \x0f7570646174650062010000  
15 |   7672 |        1 |     36 |   1655 |      0 |        0 | (0,15)  |           2 |       2306 |     24 |        |       | \x0f7570646174650063010000  
16 |    872 |        1 |     36 |   1669 |      0 |        0 | (0,16)  |       32770 |      10498 |     24 |        |       | \x0f696e7365727400f78a0100  
17 |   7632 |        1 |     36 |   1655 |      0 |        0 | (0,17)  |           2 |       2306 |     24 |        |       | \x0f7570646174650064010000  
18 |   7592 |        1 |     36 |   1655 |      0 |        0 | (0,18)  |           2 |       2306 |     24 |        |       | \x0f7570646174650065010000  
19 |   7552 |        1 |     36 |   1655 |      0 |        0 | (0,19)  |           2 |       2306 |     24 |        |       | \x0f7570646174650066010000  
20 |   7512 |        1 |     36 |   1655 |      0 |        0 | (0,20)  |           2 |       2306 |     24 |        |       | \x0f7570646174650067010000  
21 |   7472 |        1 |     36 |   1655 |      0 |        0 | (0,21)  |           2 |       2306 |     24 |        |       | \x0f7570646174650068010000  
22 |   7432 |        1 |     36 |   1655 |      0 |        0 | (0,22)  |           2 |       2306 |     24 |        |       | \x0f7570646174650069010000  
23 |   7392 |        1 |     36 |   1655 |      0 |        0 | (0,23)  |           2 |       2306 |     24 |        |       | \x0f757064617465006a010000  
24 |   7352 |        1 |     36 |   1655 |      0 |        0 | (0,24)  |           2 |       2306 |     24 |        |       | \x0f757064617465006b010000  
25 |   7312 |        1 |     36 |   1655 |      0 |        0 | (0,25)  |           2 |       2306 |     24 |        |       | \x0f757064617465006c010000  
26 |   7272 |        1 |     36 |   1655 |      0 |        0 | (0,26)  |           2 |       2306 |     24 |        |       | \x0f757064617465006d010000  
27 |   7232 |        1 |     36 |   1655 |      0 |        0 | (0,27)  |           2 |       2306 |     24 |        |       | \x0f757064617465006e010000  
28 |   7192 |        1 |     36 |   1655 |      0 |        0 | (0,28)  |           2 |       2306 |     24 |        |       | \x0f757064617465006f010000  
29 |   7152 |        1 |     36 |   1655 |      0 |        0 | (0,29)  |           2 |       2306 |     24 |        |       | \x0f7570646174650070010000  
30 |   7112 |        1 |     36 |   1655 |      0 |        0 | (0,30)  |           2 |       2306 |     24 |        |       | \x0f7570646174650071010000  
31 |   7072 |        1 |     36 |   1655 |      0 |        0 | (0,31)  |           2 |       2306 |     24 |        |       | \x0f7570646174650072010000  
32 |   7032 |        1 |     36 |   1655 |      0 |        0 | (0,32)  |           2 |       2306 |     24 |        |       | \x0f7570646174650073010000  
33 |   6992 |        1 |     36 |   1655 |      0 |        0 | (0,33)  |           2 |       2306 |     24 |        |       | \x0f7570646174650074010000  
34 |   6952 |        1 |     36 |   1655 |      0 |        0 | (0,34)  |           2 |       2306 |     24 |        |       | \x0f7570646174650075010000  
35 |   6912 |        1 |     36 |   1655 |      0 |        0 | (0,35)  |           2 |       2306 |     24 |        |       | \x0f7570646174650076010000  
36 |   6872 |        1 |     36 |   1655 |      0 |        0 | (0,36)  |           2 |       2306 |     24 |        |       | \x0f7570646174650077010000  
37 |   6832 |        1 |     36 |   1655 |      0 |        0 | (0,37)  |           2 |       2306 |     24 |        |       | \x0f7570646174650078010000  
38 |   6792 |        1 |     36 |   1655 |      0 |        0 | (0,38)  |           2 |       2306 |     24 |        |       | \x0f7570646174650079010000  
39 |   6752 |        1 |     36 |   1655 |      0 |        0 | (0,39)  |           2 |       2306 |     24 |        |       | \x0f757064617465007a010000  
40 |   6712 |        1 |     36 |   1655 |      0 |        0 | (0,40)  |           2 |       2306 |     24 |        |       | \x0f757064617465007b010000  
41 |   6672 |        1 |     36 |   1655 |      0 |        0 | (0,41)  |           2 |       2306 |     24 |        |       | \x0f757064617465007c010000  
42 |   6632 |        1 |     36 |   1655 |      0 |        0 | (0,42)  |           2 |       2306 |     24 |        |       | \x0f757064617465007d010000  
43 |   6592 |        1 |     36 |   1655 |      0 |        0 | (0,43)  |           2 |       2306 |     24 |        |       | \x0f757064617465007e010000  
44 |   6552 |        1 |     36 |   1655 |      0 |        0 | (0,44)  |           2 |       2306 |     24 |        |       | \x0f757064617465007f010000  
45 |   6512 |        1 |     36 |   1655 |      0 |        0 | (0,45)  |           2 |       2306 |     24 |        |       | \x0f7570646174650080010000  
46 |   6472 |        1 |     36 |   1655 |      0 |        0 | (0,46)  |           2 |       2306 |     24 |        |       | \x0f7570646174650081010000  
47 |   6432 |        1 |     36 |   1655 |      0 |        0 | (0,47)  |           2 |       2306 |     24 |        |       | \x0f7570646174650082010000  
48 |   6392 |        1 |     36 |   1655 |      0 |        0 | (0,48)  |           2 |       2306 |     24 |        |       | \x0f7570646174650083010000  
49 |   6352 |        1 |     36 |   1655 |      0 |        0 | (0,49)  |           2 |       2306 |     24 |        |       | \x0f7570646174650084010000  
50 |   6312 |        1 |     36 |   1655 |      0 |        0 | (0,50)  |           2 |       2306 |     24 |        |       | \x0f7570646174650085010000  
51 |   6272 |        1 |     36 |   1655 |      0 |        0 | (0,51)  |           2 |       2306 |     24 |        |       | \x0f7570646174650086010000  
52 |   6232 |        1 |     36 |   1655 |      0 |        0 | (0,52)  |           2 |       2306 |     24 |        |       | \x0f7570646174650087010000  
53 |   6192 |        1 |     36 |   1655 |      0 |        0 | (0,53)  |           2 |       2306 |     24 |        |       | \x0f7570646174650088010000  
54 |   6152 |        1 |     36 |   1655 |      0 |        0 | (0,54)  |           2 |       2306 |     24 |        |       | \x0f7570646174650089010000  
55 |   6112 |        1 |     36 |   1655 |      0 |        0 | (0,55)  |           2 |       2306 |     24 |        |       | \x0f757064617465008a010000  
56 |   6072 |        1 |     36 |   1655 |      0 |        0 | (0,56)  |           2 |       2306 |     24 |        |       | \x0f757064617465008b010000  
57 |   6032 |        1 |     36 |   1655 |      0 |        0 | (0,57)  |           2 |       2306 |     24 |        |       | \x0f757064617465008c010000  
58 |   5992 |        1 |     36 |   1655 |      0 |        0 | (0,58)  |           2 |       2306 |     24 |        |       | \x0f757064617465008d010000  
59 |   5952 |        1 |     36 |   1655 |      0 |        0 | (0,59)  |           2 |       2306 |     24 |        |       | \x0f757064617465008e010000  
60 |   5912 |        1 |     36 |   1655 |      0 |        0 | (0,60)  |           2 |       2306 |     24 |        |       | \x0f757064617465008f010000  
61 |   5872 |        1 |     36 |   1655 |      0 |        0 | (0,61)  |           2 |       2306 |     24 |        |       | \x0f7570646174650090010000  
62 |   5832 |        1 |     36 |   1655 |      0 |        0 | (0,62)  |           2 |       2306 |     24 |        |       | \x0f7570646174650091010000  
63 |   5792 |        1 |     36 |   1655 |      0 |        0 | (0,63)  |           2 |       2306 |     24 |        |       | \x0f7570646174650092010000  
64 |   5752 |        1 |     36 |   1655 |      0 |        0 | (0,64)  |           2 |       2306 |     24 |        |       | \x0f7570646174650093010000  
65 |   5712 |        1 |     36 |   1655 |      0 |        0 | (0,65)  |           2 |       2306 |     24 |        |       | \x0f7570646174650094010000  
66 |   5672 |        1 |     36 |   1655 |      0 |        0 | (0,66)  |           2 |       2306 |     24 |        |       | \x0f7570646174650095010000  
67 |   5632 |        1 |     36 |   1655 |      0 |        0 | (0,67)  |           2 |       2306 |     24 |        |       | \x0f7570646174650096010000  
68 |   5592 |        1 |     36 |   1655 |      0 |        0 | (0,68)  |           2 |       2306 |     24 |        |       | \x0f7570646174650097010000  
69 |   5552 |        1 |     36 |   1655 |      0 |        0 | (0,69)  |           2 |       2306 |     24 |        |       | \x0f7570646174650098010000  
70 |   5512 |        1 |     36 |   1655 |      0 |        0 | (0,70)  |           2 |       2306 |     24 |        |       | \x0f7570646174650099010000  
71 |   5472 |        1 |     36 |   1655 |      0 |        0 | (0,71)  |           2 |       2306 |     24 |        |       | \x0f757064617465009a010000  
72 |   5432 |        1 |     36 |   1655 |      0 |        0 | (0,72)  |           2 |       2306 |     24 |        |       | \x0f757064617465009b010000  
73 |   5392 |        1 |     36 |   1655 |      0 |        0 | (0,73)  |           2 |       2306 |     24 |        |       | \x0f757064617465009c010000  
74 |   5352 |        1 |     36 |   1655 |      0 |        0 | (0,74)  |           2 |       2306 |     24 |        |       | \x0f757064617465009d010000  
75 |   5312 |        1 |     36 |   1655 |      0 |        0 | (0,75)  |           2 |       2306 |     24 |        |       | \x0f757064617465009e010000  
76 |   5272 |        1 |     36 |   1655 |      0 |        0 | (0,76)  |           2 |       2306 |     24 |        |       | \x0f757064617465009f010000  
77 |   5232 |        1 |     36 |   1655 |      0 |        0 | (0,77)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a0010000  78 |   5192 |        1 |     36 |   1655 |      0 |        0 | (0,78)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a1010000  79 |   5152 |        1 |     36 |   1655 |      0 |        0 | (0,79)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a2010000  80 |   5112 |        1 |     36 |   1655 |      0 |        0 | (0,80)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a3010000  81 |   5072 |        1 |     36 |   1655 |      0 |        0 | (0,81)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a4010000  82 |   5032 |        1 |     36 |   1655 |      0 |        0 | (0,82)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a5010000  83 |   4992 |        1 |     36 |   1655 |      0 |        0 | (0,83)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a6010000  84 |   4952 |        1 |     36 |   1655 |      0 |        0 | (0,84)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a7010000  85 |   4912 |        1 |     36 |   1655 |      0 |        0 | (0,85)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a8010000  86 |   4872 |        1 |     36 |   1655 |      0 |        0 | (0,86)  |           2 |       2306 |     24 |        |       | \x0f75706461746500a9010000  87 |   4832 |        1 |     36 |   1655 |      0 |        0 | (0,87)  |           2 |       2306 |     24 |        |       | \x0f75706461746500aa010000  88 |   4792 |        1 |     36 |   1655 |      0 |        0 | (0,88)  |           2 |       2306 |     24 |        |       | \x0f75706461746500ab010000  89 |   4752 |        1 |     36 |   1655 |      0 |        0 | (0,89)  |           2 |       2306 |     24 |        |       | \x0f75706461746500ac010000  90 |   4712 |        1 |     36 |   1655 |      0 |        0 | (0,90)  |           2 |       2306 |     24 |        |       | \x0f75706461746500ad010000  91 |   4672 |        1 |     36 |   1655 |      0 |        0 | (0,91)  |           2 |       2306 |     24 |        |       | \x0f75706461746500ae010000  92 |   4632 |        1 |     36 |   1655 |      0 |        0 | (0,92)  |           2 |       2306 |     24 |        |       | \x0f75706461746500af010000  93 |   4592 |        1 |     36 |   1655 |      0 |        0 | (0,93)  |           2 |       2306 |     24 |        |       | \x0f75706461746500b0010000  94 |   4552 |        1 |     36 |   1655 |      0 |        0 | (0,94)  |           2 |       2306 |     24 |        |       | \x0f75706461746500b1010000  95 |   4512 |        1 |     36 |   1655 |      0 |        0 | (0,95)  |           2 |       2306 |     24 |        |       | \x0f75706461746500b2010000  96 |   4472 |        1 |     36 |   1655 |      0 |        0 | (0,96)  |           2 |       2306 |     24 |        |       | \x0f75706461746500b3010000  97 |   4432 |        1 |     36 |   1655 |      0 |        0 | (0,97)  |           2 |       2306 |     24 |        |       | \x0f75706461746500b4010000  98 |   4392 |        1 |     36 |   1655 |      0 |        0 | (0,98)  |           2 |       2306 |     24 |        |       | \x0f75706461746500b5010000  99 |   4352 |        1 |     36 |   1655 |      0 |        0 | (0,99)  |           2 |       2306 |     24 |        |       | \x0f75706461746500b6010000 100 |   4312 |        1 |     36 |   1655 |      0 |        0 | (0,100) |           2 |       2306 |     24 |        |       | \x0f75706461746500b7010000 101 |   4272 |        1 |     36 |   1655 |      0 |        0 | (0,101) |           2 |       2306 |     24 |        |       | \x0f75706461746500b8010000 102 |   4232 |        1 |     36 |   1655 |      0 |        0 | (0,102) |           2 |       2306 |     24 |        |       | \x0f75706461746500b9010000 103 |    187 |        2 |      0 |        |        |          |         |             |            |        |        |       |
104 |   1992 |        1 |     36 |   1665 |      0 |        0 | (0,104) |           2 |       2306 |     24 |        |       | \x0f757064617465002e010000
105 |   4192 |        1 |     36 |   1655 |      0 |        0 | (0,105) |           2 |       2306 |     24 |        |       | \x0f75706461746500ba010000
106 |   4152 |        1 |     36 |   1655 |      0 |        0 | (0,106) |           2 |       2306 |     24 |        |       | \x0f75706461746500bb010000 107 |   4112 |        1 |     36 |   1655 |      0 |        0 | (0,107) |           2 |       2306 |     24 |        |       | \x0f75706461746500bc010000 108 |   4072 |        1 |     36 |   1655 |      0 |        0 | (0,108) |           2 |       2306 |     24 |        |       | \x0f75706461746500bd010000 109 |   4032 |        1 |     36 |   1655 |      0 |        0 | (0,109) |           2 |       2306 |     24 |        |       | \x0f75706461746500be010000 110 |   3992 |        1 |     36 |   1655 |      0 |        0 | (0,110) |           2 |       2306 |     24 |        |       | \x0f75706461746500bf010000 111 |   3952 |        1 |     36 |   1655 |      0 |        0 | (0,111) |           2 |       2306 |     24 |        |       | \x0f75706461746500c0010000 112 |   3912 |        1 |     36 |   1655 |      0 |        0 | (0,112) |           2 |       2306 |     24 |        |       | \x0f75706461746500c1010000 113 |   3872 |        1 |     36 |   1655 |      0 |        0 | (0,113) |           2 |       2306 |     24 |        |       | \x0f75706461746500c2010000 114 |   3832 |        1 |     36 |   1655 |      0 |        0 | (0,114) |           2 |       2306 |     24 |        |       | \x0f75706461746500c3010000 115 |   3792 |        1 |     36 |   1655 |      0 |        0 | (0,115) |           2 |       2306 |     24 |        |       | \x0f75706461746500c4010000 116 |   3752 |        1 |     36 |   1655 |      0 |        0 | (0,116) |           2 |       2306 |     24 |        |       | \x0f75706461746500c5010000 117 |   3712 |        1 |     36 |   1655 |      0 |        0 | (0,117) |           2 |       2306 |     24 |        |       | \x0f75706461746500c6010000 118 |   3672 |        1 |     36 |   1655 |      0 |        0 | (0,118) |           2 |       2306 |     24 |        |       | \x0f75706461746500c7010000 119 |   3632 |        1 |     36 |   1655 |      0 |        0 | (0,119) |           2 |       2306 |     24 |        |       | \x0f75706461746500c8010000 120 |   3592 |        1 |     36 |   1655 |      0 |        0 | (0,120) |           2 |       2306 |     24 |        |       | \x0f75706461746500c9010000 121 |   3552 |        1 |     36 |   1655 |      0 |        0 | (0,121) |           2 |       2306 |     24 |        |       | \x0f75706461746500ca010000 122 |   3512 |        1 |     36 |   1655 |      0 |        0 | (0,122) |           2 |       2306 |     24 |        |       | \x0f75706461746500cb010000 123 |   3472 |        1 |     36 |   1655 |      0 |        0 | (0,123) |           2 |       2306 |     24 |        |       | \x0f75706461746500cc010000 124 |   3432 |        1 |     36 |   1655 |      0 |        0 | (0,124) |           2 |       2306 |     24 |        |       | \x0f75706461746500cd010000 125 |   3392 |        1 |     36 |   1655 |      0 |        0 | (0,125) |           2 |       2306 |     24 |        |       | \x0f75706461746500ce010000 126 |   3352 |        1 |     36 |   1655 |      0 |        0 | (0,126) |           2 |       2306 |     24 |        |       | \x0f75706461746500cf010000 127 |   3312 |        1 |     36 |   1655 |      0 |        0 | (0,127) |           2 |       2306 |     24 |        |       | \x0f75706461746500d0010000 128 |   3272 |        1 |     36 |   1655 |      0 |        0 | (0,128) |           2 |       2306 |     24 |        |       | \x0f75706461746500d1010000 129 |   3232 |        1 |     36 |   1655 |      0 |        0 | (0,129) |           2 |       2306 |     24 |        |       | \x0f75706461746500d2010000 130 |   3192 |        1 |     36 |   1655 |      0 |        0 | (0,130) |           2 |       2306 |     24 |        |       | \x0f75706461746500d3010000 131 |   3152 |        1 |     36 |   1655 |      0 |        0 | (0,131) |           2 |       2306 |     24 |        |       | \x0f75706461746500d4010000 132 |   3112 |        1 |     36 |   1655 |      0 |        0 | (0,132) |           2 |       2306 |     24 |        |       | \x0f75706461746500d5010000 133 |   3072 |        1 |     36 |   1655 |      0 |        0 | (0,133) |           2 |       2306 |     24 |        |       | \x0f75706461746500d6010000 134 |   3032 |        1 |     36 |   1655 |      0 |        0 | (0,134) |           2 |       2306 |     24 |        |       | \x0f75706461746500d7010000 135 |   2992 |        1 |     36 |   1655 |      0 |        0 | (0,135) |           2 |       2306 |     24 |        |       | \x0f75706461746500d8010000 136 |   2952 |        1 |     36 |   1655 |      0 |        0 | (0,136) |           2 |       2306 |     24 |        |       | \x0f75706461746500d9010000 137 |   2912 |        1 |     36 |   1655 |      0 |        0 | (0,137) |           2 |       2306 |     24 |        |       | \x0f75706461746500da010000 138 |   2872 |        1 |     36 |   1655 |      0 |        0 | (0,138) |           2 |       2306 |     24 |        |       | \x0f75706461746500db010000 139 |   2832 |        1 |     36 |   1655 |      0 |        0 | (0,139) |           2 |       2306 |     24 |        |       | \x0f75706461746500dc010000 140 |   2792 |        1 |     36 |   1655 |      0 |        0 | (0,140) |           2 |       2306 |     24 |        |       | \x0f75706461746500dd010000 141 |   2752 |        1 |     36 |   1655 |      0 |        0 | (0,141) |           2 |       2306 |     24 |        |       | \x0f75706461746500de010000 142 |   2712 |        1 |     36 |   1655 |      0 |        0 | (0,142) |           2 |       2306 |     24 |        |       | \x0f75706461746500df010000 143 |   2672 |        1 |     36 |   1655 |      0 |        0 | (0,143) |           2 |       2306 |     24 |        |       | \x0f75706461746500e0010000 144 |   2632 |        1 |     36 |   1655 |      0 |        0 | (0,144) |           2 |       2306 |     24 |        |       | \x0f75706461746500e1010000 145 |   2592 |        1 |     36 |   1655 |      0 |        0 | (0,145) |           2 |       2306 |     24 |        |       | \x0f75706461746500e2010000 146 |   2552 |        1 |     36 |   1655 |      0 |        0 | (0,146) |           2 |       2306 |     24 |        |       | \x0f75706461746500e3010000 147 |   2512 |        1 |     36 |   1655 |      0 |        0 | (0,147) |           2 |       2306 |     24 |        |       | \x0f75706461746500e4010000 148 |   2472 |        1 |     36 |   1655 |      0 |        0 | (0,148) |           2 |       2306 |     24 |        |       | \x0f75706461746500e5010000 149 |   2432 |        1 |     36 |   1655 |      0 |        0 | (0,149) |           2 |       2306 |     24 |        |       | \x0f75706461746500e6010000 150 |   2392 |        1 |     36 |   1655 |      0 |        0 | (0,150) |           2 |       2306 |     24 |        |       | \x0f75706461746500e7010000 151 |   2352 |        1 |     36 |   1655 |      0 |        0 | (0,151) |           2 |       2306 |     24 |        |       | \x0f75706461746500e8010000 152 |   2312 |        1 |     36 |   1655 |      0 |        0 | (0,152) |           2 |       2306 |     24 |        |       | \x0f75706461746500e9010000 153 |   2272 |        1 |     36 |   1655 |      0 |        0 | (0,153) |           2 |       2306 |     24 |        |       | \x0f75706461746500ea010000 154 |   2232 |        1 |     36 |   1655 |      0 |        0 | (0,154) |           2 |       2306 |     24 |        |       | \x0f75706461746500eb010000 155 |   2192 |        1 |     36 |   1655 |      0 |        0 | (0,155) |           2 |       2306 |     24 |        |       | \x0f75706461746500ec010000 156 |   2152 |        1 |     36 |   1655 |      0 |        0 | (0,156) |           2 |       2306 |     24 |        |       | \x0f75706461746500ed010000 157 |   2112 |        1 |     36 |   1655 |      0 |        0 | (0,157) |           2 |       2306 |     24 |        |       | \x0f75706461746500ee010000 158 |   2072 |        1 |     36 |   1655 |      0 |        0 | (0,158) |           2 |       2306 |     24 |        |       | \x0f75706461746500ef010000 159 |   1952 |        1 |     36 |   1665 |      0 |        0 | (0,159) |           2 |       2306 |     24 |        |       | \x0f757064617465002f010000 160 |   1912 |        1 |     36 |   1665 |      0 |        0 | (0,160) |           2 |       2306 |     24 |        |       | \x0f7570646174650030010000 161 |   1872 |        1 |     36 |   1665 |      0 |        0 | (0,161) |           2 |       2306 |     24 |        |       | \x0f7570646174650031010000 162 |   1832 |        1 |     36 |   1665 |      0 |        0 | (0,162) |           2 |       2306 |     24 |        |       | \x0f7570646174650032010000 163 |   1792 |        1 |     36 |   1665 |      0 |        0 | (0,163) |           2 |       2306 |     24 |        |       | \x0f7570646174650033010000 164 |   1752 |        1 |     36 |   1665 |      0 |        0 | (0,164) |           2 |       2306 |     24 |        |       | \x0f7570646174650034010000 165 |   1712 |        1 |     36 |   1665 |      0 |        0 | (0,165) |           2 |       2306 |     24 |        |       | \x0f7570646174650035010000 166 |   1672 |        1 |     36 |   1665 |      0 |        0 | (0,166) |           2 |       2306 |     24 |        |       | \x0f7570646174650036010000 167 |   1632 |        1 |     36 |   1665 |      0 |        0 | (0,167) |           2 |       2306 |     24 |        |       | \x0f7570646174650037010000 168 |   1592 |        1 |     36 |   1665 |      0 |        0 | (0,168) |           2 |       2306 |     24 |        |       | \x0f7570646174650038010000 169 |   1552 |        1 |     36 |   1665 |      0 |        0 | (0,169) |           2 |       2306 |     24 |        |       | \x0f7570646174650039010000 170 |   1512 |        1 |     36 |   1665 |      0 |        0 | (0,170) |           2 |       2306 |     24 |        |       | \x0f757064617465003a010000 171 |   1472 |        1 |     36 |   1665 |      0 |        0 | (0,171) |           2 |       2306 |     24 |        |       | \x0f757064617465003b010000 172 |   1432 |        1 |     36 |   1665 |      0 |        0 | (0,172) |           2 |       2306 |     24 |        |       | \x0f757064617465003c010000 173 |   1392 |        1 |     36 |   1665 |      0 |        0 | (0,173) |           2 |       2306 |     24 |        |       | \x0f757064617465003d010000 174 |   1352 |        1 |     36 |   1665 |      0 |        0 | (0,174) |           2 |       2306 |     24 |        |       | \x0f757064617465003e010000 175 |   1312 |        1 |     36 |   1665 |      0 |        0 | (0,175) |           2 |       2306 |     24 |        |       | \x0f757064617465003f010000 176 |   1272 |        1 |     36 |   1665 |      0 |        0 | (0,176) |           2 |       2306 |     24 |        |       | \x0f7570646174650040010000 177 |   1232 |        1 |     36 |   1665 |      0 |        0 | (0,177) |           2 |       2306 |     24 |        |       | \x0f7570646174650041010000 178 |   1192 |        1 |     36 |   1665 |      0 |        0 | (0,178) |           2 |       2306 |     24 |        |       | \x0f7570646174650042010000 179 |   1152 |        1 |     36 |   1665 |      0 |        0 | (0,179) |           2 |       2306 |     24 |        |       | \x0f7570646174650043010000 180 |    792 |        1 |     36 |   1686 |      0 |        0 | (0,180) |           2 |       2050 |     24 |        |       | \x0f7570646174650030010000 181 |   1112 |        1 |     36 |   1665 |      0 |        0 | (0,181) |           2 |       2306 |     24 |        |       | \x0f7570646174650045010000 182 |   1072 |        1 |     36 |   1665 |      0 |        0 | (0,182) |           2 |       2306 |     24 |        |       | \x0f7570646174650046010000 183 |   1032 |        1 |     36 |   1665 |      0 |        0 | (0,183) |           2 |       2306 |     24 |        |       | \x0f7570646174650047010000 184 |    992 |        1 |     36 |   1665 |      0 |        0 | (0,184) |           2 |       2306 |     24 |        |       | \x0f7570646174650048010000 185 |    952 |        1 |     36 |   1665 |      0 |        0 | (0,185) |           2 |       2306 |     24 |        |       | \x0f7570646174650049010000 186 |    912 |        1 |     36 |   1665 |      0 |        0 | (0,186) |           2 |       2306 |     24 |        |       | \x0f757064617465004a010000 187 |   8152 |        1 |     36 |   1646 |      0 |        0 | (0,187) |       32770 |      10498 |     24 |        |       | \x0f75706461746500a1860100 188 |      0 |        0 |      0 |        |        |          |         |             |            |        |        |       |(188 rows)
pg_filedump工具

安装pg_filedump工具
su - postgres
git clone git://git.postgresql.org/git/pg_filedump.git  
cd pg_filedump   
make && make install

使用pg_filedump工具
[postgres@mogdb1 13580]$ pg_filedump -D varchar,int -i 16977|more
********************************************************************
PostgreSQL File/Block Formatted Dump Utility
** File: 16977* Options used: -D varchar,int -i
*******************************************************************
Block    0
********************************************************
<Header>
-----
Block Offset: 0x00000000         Offsets: Lower     776 (0x0308) Block: Size 8192  Version    4            Upper     792 (0x0318) LSN:  logid      1 recoff 0x51015d20      Special  8192 (0x2000) Items:  188                      Free Space:   16 Checksum: 0x1b45  Prune XID: 0x00000699  Flags: 0x0001 (HAS_FREE_LINES) Length (including item array): 776<Data> ----- Item   1 -- Length:    0  Offset:   16 (0x0010)  Flags: REDIRECT Item   2 -- Length:   36  Offset:  832 (0x0340)  Flags: NORMAL  XMIN: 1685  XMAX: 0  CID|XVAC: 0  Block Id: 0  linp Index: 2   Attributes: 2   Size: 24  infomask: 0x0902 (HASVARWIDTH|XMIN_COMMITTED|XMAX_INVALID)COPY: update    304 Item   3 -- Length:   36  Offset: 2032 (0x07f0)  Flags: NORMAL  XMIN: 1665  XMAX: 1689  CID|XVAC: 0  Block Id: 0  linp Index: 3   Attributes: 2   Size: 24  infomask: 0x0102 (HASVARWIDTH|XMIN_COMMITTED|KEYS_UPDATED)COPY: update    301 Item   4 -- Length:   36  Offset: 8112 (0x1fb0)  Flags: NORMAL  XMIN: 1655  XMAX: 0  CID|XVAC: 0  Block Id: 0  linp Index: 4   Attributes: 2   Size: 24  infomask: 0x0902 (HASVARWIDTH|XMIN_COMMITTED|XMAX_INVALID)COPY: update    344 Item   5 -- Length:   36  Offset: 8072 (0x1f88)  Flags: NORMAL  XMIN: 1655  XMAX: 0  CID|XVAC: 0  Block Id: 0  linp Index: 5   Attributes: 2   Size: 24  infomask: 0x0902 (HASVARWIDTH|XMIN_COMMITTED|XMAX_INVALID)COPY: update    345 Item   6 -- Length:   36  Offset: 8032 (0x1f60)  Flags: NORMAL  XMIN: 1655  XMAX: 0  CID|XVAC: 0  Block Id: 0  linp Index: 6   Attributes: 2   Size: 24  infomask: 0x0902 (HASVARWIDTH|XMIN_COMMITTED|XMAX_INVALID)COPY: update    346 Item   7 -- Length:   36  Offset: 7992 (0x1f38)  Flags: NORMAL  XMIN: 1655  XMAX: 0  CID|XVAC: 0  Block Id: 0  linp Index: 7   Attributes: 2   Size: 24  infomask: 0x0902 (HASVARWIDTH|XMIN_COMMITTED|XMAX_INVALID)COPY: update    347 Item   8 -- Length:   36  Offset: 7952 (0x1f10)  Flags: NORMAL  XMIN: 1655  XMAX: 0  CID|XVAC: 0  Block Id: 0  linp Index: 8   Attributes: 2   Size: 24  infomask: 0x0902 (HASVARWIDTH|XMIN_COMMITTED|XMAX_INVALID)


通过观察页内数据的变化,有助于我们理解PG数据库中MVCC,VACUUM以及HOT特性的原理。





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-24 23:03 , Processed in 0.210602 second(s), 18 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表