PostgreSQL vacuum 的页内tuple move收缩空间

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介:

标签

PostgreSQL , vacuum , tuple move , 压缩空间 , 收缩空间 , 空洞


背景

当往数据库内插入记录时,PostgreSQL heap page内部的空间分配是这样的,lp内容为对应tuple在当前页的OFFSET,lp的位置固定长度固定(固定page head后面就是lp),lp固定方便tuple的搜索(例如ctid的第二个部分就是lp信息)。

pic

pic

pic

lp从page head开始分配,tuple从page tail开始分配,lp指向对应tuple的开始位置。

当一个PAGE内部的tuple有部分被删除后,会不会出现PAGE内部空间的空洞呢? 如图:

pic

vacuum垃圾回收时,会不会对tuple做move处理,收缩空间呢?

会。

例子

1、创建测试表

postgres=# create table c (id int, info text);  
CREATE TABLE  

2、创建PAGE查看插件

postgres=# create extension pageinspect;  
CREATE TABLE  

3、插入20条测试数据

postgres=# insert into c select id, repeat(md5(random()::text), 16) from generate_series(1,20) t(id);  
INSERT 0 20  

4、每列变长字段大小516字节。

postgres=# select pg_column_size(repeat(md5(random()::text), 16));  
 pg_column_size   
----------------  
            516  
(1 row)  

5、查看第一页(已用满)

lp已分配到80字节处

lp offset已分配到576字节处。

剩余只有不到496字节的空间。

postgres=# SELECT * FROM page_header(get_raw_page('c', 0));  
     lsn     | checksum | flags | lower | upper | special | pagesize | version | prune_xid   
-------------+----------+-------+-------+-------+---------+----------+---------+-----------  
 3A/28D007F0 |        0 |     0 |    80 |   576 |    8192 |     8192 |       4 |         0  
(1 row)  

6、查看每一条记录tuple在page内部的offset

postgres=# select lp,lp_off from heap_page_items(get_raw_page('c', 0));  
 lp | lp_off   
----+--------  
  1 |   7648  
  2 |   7104  
  3 |   6560  
  4 |   6016  
  5 |   5472  
  6 |   4928  
  7 |   4384  
  8 |   3840  
  9 |   3296  
 10 |   2752  
 11 |   2208  
 12 |   1664  
 13 |   1120  
 14 |    576  
(14 rows)  

7、查看详细的page内的tuple信息

postgres=# select * from heap_page_items(get_raw_page('c', 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 |   7648 |        1 |    544 | 210387734 |      0 |        0 | (0,1)  |           2 |       2306 |     24 |        |       | \x0100000010080000343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132  
356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653  
764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137  
396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613  
3636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033  
  2 |   7104 |        1 |    544 | 210387734 |      0 |        0 | (0,2)  |           2 |       2306 |     24 |        |       | \x0200000010080000316630613130346132663938623737623237383037646264343564363061303731663061313034613266393862  
373762323738303764626434356436306130373166306131303461326639386237376232373830376462643435643630613037316630613130346132663938623737623237383037646264343564363061303731663061313034613266393862373762323738303764626434356436306130373166306  
131303461326639386237376232373830376462643435643630613037316630613130346132663938623737623237383037646264343564363061303731663061313034613266393862373762323738303764626434356436306130373166306131303461326639386237376232373830376462643435  
643630613037316630613130346132663938623737623237383037646264343564363061303731663061313034613266393862373762323738303764626434356436306130373166306131303461326639386237376232373830376462643435643630613037316630613130346132663938623737623  
2373830376462643435643630613037316630613130346132663938623737623237383037646264343564363061303731663061313034613266393862373762323738303764626434356436306130373166306131303461326639386237376232373830376462643435643630613037  
  3 |   6560 |        1 |    544 | 210387734 |      0 |        0 | (0,3)  |           2 |       2306 |     24 |        |       | \x0300000010080000613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630  
376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613  
866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565  
646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366  
5626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337  
  4 |   6016 |        1 |    544 | 210387734 |      0 |        0 | (0,4)  |           2 |       2306 |     24 |        |       | \x0400000010080000313536333031663433393935336533343937313065616437326265633266336331353633303166343339393533  
653334393731306561643732626563326633633135363330316634333939353365333439373130656164373262656332663363313536333031663433393935336533343937313065616437326265633266336331353633303166343339393533653334393731306561643732626563326633633135363  
330316634333939353365333439373130656164373262656332663363313536333031663433393935336533343937313065616437326265633266336331353633303166343339393533653334393731306561643732626563326633633135363330316634333939353365333439373130656164373262  
656332663363313536333031663433393935336533343937313065616437326265633266336331353633303166343339393533653334393731306561643732626563326633633135363330316634333939353365333439373130656164373262656332663363313536333031663433393935336533343  
9373130656164373262656332663363313536333031663433393935336533343937313065616437326265633266336331353633303166343339393533653334393731306561643732626563326633633135363330316634333939353365333439373130656164373262656332663363  
  5 |   5472 |        1 |    544 | 210387734 |      0 |        0 | (0,5)  |           2 |       2306 |     24 |        |       | \x0500000010080000316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039  
623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383  
431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766  
623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626  
6616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563  
  6 |   4928 |        1 |    544 | 210387734 |      0 |        0 | (0,6)  |           2 |       2306 |     24 |        |       | \x0600000010080000316238636461623434303265636161373465613536336661656164383563366331623863646162343430326563  
616137346561353633666165616438356336633162386364616234343032656361613734656135363366616561643835633663316238636461623434303265636161373465613536336661656164383563366331623863646162343430326563616137346561353633666165616438356336633162386  
364616234343032656361613734656135363366616561643835633663316238636461623434303265636161373465613536336661656164383563366331623863646162343430326563616137346561353633666165616438356336633162386364616234343032656361613734656135363366616561  
643835633663316238636461623434303265636161373465613536336661656164383563366331623863646162343430326563616137346561353633666165616438356336633162386364616234343032656361613734656135363366616561643835633663316238636461623434303265636161373  
4656135363366616561643835633663316238636461623434303265636161373465613536336661656164383563366331623863646162343430326563616137346561353633666165616438356336633162386364616234343032656361613734656135363366616561643835633663  
  7 |   4384 |        1 |    544 | 210387734 |      0 |        0 | (0,7)  |           2 |       2306 |     24 |        |       | \x0700000010080000626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737  
336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633  
361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838  
336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383  
9306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461  
  8 |   3840 |        1 |    544 | 210387734 |      0 |        0 | (0,8)  |           2 |       2306 |     24 |        |       | \x0800000010080000303465326439363635383635343566336262313338363165656535616365643630346532643936363538363534  
356633626231333836316565653561636564363034653264393636353836353435663362623133383631656565356163656436303465326439363635383635343566336262313338363165656535616365643630346532643936363538363534356633626231333836316565653561636564363034653  
264393636353836353435663362623133383631656565356163656436303465326439363635383635343566336262313338363165656535616365643630346532643936363538363534356633626231333836316565653561636564363034653264393636353836353435663362623133383631656565  
356163656436303465326439363635383635343566336262313338363165656535616365643630346532643936363538363534356633626231333836316565653561636564363034653264393636353836353435663362623133383631656565356163656436303465326439363635383635343566336  
2623133383631656565356163656436303465326439363635383635343566336262313338363165656535616365643630346532643936363538363534356633626231333836316565653561636564363034653264393636353836353435663362623133383631656565356163656436  
  9 |   3296 |        1 |    544 | 210387734 |      0 |        0 | (0,9)  |           2 |       2306 |     24 |        |       | \x0900000010080000386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565  
393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393  
337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231  
336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323  
5383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061  
 10 |   2752 |        1 |    544 | 210387734 |      0 |        0 | (0,10) |           2 |       2306 |     24 |        |       | \x0a00000010080000643962373365636264636538633333666634656638306362393966306138373264396237336563626463653863  
333366663465663830636239396630613837326439623733656362646365386333336666346566383063623939663061383732643962373365636264636538633333666634656638306362393966306138373264396237336563626463653863333366663465663830636239396630613837326439623  
733656362646365386333336666346566383063623939663061383732643962373365636264636538633333666634656638306362393966306138373264396237336563626463653863333366663465663830636239396630613837326439623733656362646365386333336666346566383063623939  
663061383732643962373365636264636538633333666634656638306362393966306138373264396237336563626463653863333366663465663830636239396630613837326439623733656362646365386333336666346566383063623939663061383732643962373365636264636538633333666  
6346566383063623939663061383732643962373365636264636538633333666634656638306362393966306138373264396237336563626463653863333366663465663830636239396630613837326439623733656362646365386333336666346566383063623939663061383732  
 11 |   2208 |        1 |    544 | 210387734 |      0 |        0 | (0,11) |           2 |       2306 |     24 |        |       | \x0b00000010080000633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661  
353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363  
336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163  
633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383  
1653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335  
 12 |   1664 |        1 |    544 | 210387734 |      0 |        0 | (0,12) |           2 |       2306 |     24 |        |       | \x0c00000010080000616665666266363465626661633431373230323364653736633335633033633761666566626636346562666163  
343137323032336465373663333563303363376166656662663634656266616334313732303233646537366333356330336337616665666266363465626661633431373230323364653736633335633033633761666566626636346562666163343137323032336465373663333563303363376166656  
662663634656266616334313732303233646537366333356330336337616665666266363465626661633431373230323364653736633335633033633761666566626636346562666163343137323032336465373663333563303363376166656662663634656266616334313732303233646537366333  
356330336337616665666266363465626661633431373230323364653736633335633033633761666566626636346562666163343137323032336465373663333563303363376166656662663634656266616334313732303233646537366333356330336337616665666266363465626661633431373  
2303233646537366333356330336337616665666266363465626661633431373230323364653736633335633033633761666566626636346562666163343137323032336465373663333563303363376166656662663634656266616334313732303233646537366333356330336337  
 13 |   1120 |        1 |    544 | 210387734 |      0 |        0 | (0,13) |           2 |       2306 |     24 |        |       | \x0d00000010080000323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838  
366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396  
362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164  
366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666  
2366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561  
 14 |    576 |        1 |    544 | 210387734 |      0 |        0 | (0,14) |           2 |       2306 |     24 |        |       | \x0e00000010080000313866653965363530616635383164623735326363306433303530633765363931386665396536353061663538  
316462373532636330643330353063376536393138666539653635306166353831646237353263633064333035306337653639313866653965363530616635383164623735326363306433303530633765363931386665396536353061663538316462373532636330643330353063376536393138666  
539653635306166353831646237353263633064333035306337653639313866653965363530616635383164623735326363306433303530633765363931386665396536353061663538316462373532636330643330353063376536393138666539653635306166353831646237353263633064333035  
306337653639313866653965363530616635383164623735326363306433303530633765363931386665396536353061663538316462373532636330643330353063376536393138666539653635306166353831646237353263633064333035306337653639313866653965363530616635383164623  
7353263633064333035306337653639313866653965363530616635383164623735326363306433303530633765363931386665396536353061663538316462373532636330643330353063376536393138666539653635306166353831646237353263633064333035306337653639  
(14 rows)  

8、插队删除记录13条

postgres=# delete from c where ctid not in ('(0,1)','(0,3)','(0,5)','(0,7)','(0,9)','(0,11)','(0,13)');  
DELETE 13  

9、查看删除后的page 内部记录信息,现在还没有垃圾回收,所以看到他们都还占用空间

postgres=# select * from heap_page_items(get_raw_page('c', 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 |   7648 |        1 |    544 | 210387734 |         0 |        0 | (0,1)  |           2 |       2306 |     24 |        |       | \x0100000010080000343065376462383965383461323564613363623466366133613739613739303334306537646238396538346  
132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430  
653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336  
137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564  
6133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033  
  2 |   7104 |        1 |    544 | 210387734 | 210387736 |        0 | (0,2)  |        8194 |        258 |     24 |        |       | \x0200000010080000316630613130346132663938623737623237383037646264343564363061303731663061313034613266393  
862373762323738303764626434356436306130373166306131303461326639386237376232373830376462643435643630613037316630613130346132663938623737623237383037646264343564363061303731663061313034613266393862373762323738303764626434356436306130373166  
306131303461326639386237376232373830376462643435643630613037316630613130346132663938623737623237383037646264343564363061303731663061313034613266393862373762323738303764626434356436306130373166306131303461326639386237376232373830376462643  
435643630613037316630613130346132663938623737623237383037646264343564363061303731663061313034613266393862373762323738303764626434356436306130373166306131303461326639386237376232373830376462643435643630613037316630613130346132663938623737  
6232373830376462643435643630613037316630613130346132663938623737623237383037646264343564363061303731663061313034613266393862373762323738303764626434356436306130373166306131303461326639386237376232373830376462643435643630613037  
  3 |   6560 |        1 |    544 | 210387734 |         0 |        0 | (0,3)  |           2 |       2306 |     24 |        |       | \x0300000010080000613361386662303965343066303763366562663839323234656564633666333761336138666230396534306  
630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133  
613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346  
565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763  
3665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337  
  4 |   6016 |        1 |    544 | 210387734 | 210387736 |        0 | (0,4)  |        8194 |        258 |     24 |        |       | \x0400000010080000313536333031663433393935336533343937313065616437326265633266336331353633303166343339393  
533653334393731306561643732626563326633633135363330316634333939353365333439373130656164373262656332663363313536333031663433393935336533343937313065616437326265633266336331353633303166343339393533653334393731306561643732626563326633633135  
363330316634333939353365333439373130656164373262656332663363313536333031663433393935336533343937313065616437326265633266336331353633303166343339393533653334393731306561643732626563326633633135363330316634333939353365333439373130656164373  
262656332663363313536333031663433393935336533343937313065616437326265633266336331353633303166343339393533653334393731306561643732626563326633633135363330316634333939353365333439373130656164373262656332663363313536333031663433393935336533  
3439373130656164373262656332663363313536333031663433393935336533343937313065616437326265633266336331353633303166343339393533653334393731306561643732626563326633633135363330316634333939353365333439373130656164373262656332663363  
  5 |   5472 |        1 |    544 | 210387734 |         0 |        0 | (0,5)  |           2 |       2306 |     24 |        |       | \x0500000010080000316338343165353030336530396232626661636330623766376662386334356331633834316535303033653  
039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163  
383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663  
766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232  
6266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563  
  6 |   4928 |        1 |    544 | 210387734 | 210387736 |        0 | (0,6)  |        8194 |        258 |     24 |        |       | \x0600000010080000316238636461623434303265636161373465613536336661656164383563366331623863646162343430326  
563616137346561353633666165616438356336633162386364616234343032656361613734656135363366616561643835633663316238636461623434303265636161373465613536336661656164383563366331623863646162343430326563616137346561353633666165616438356336633162  
386364616234343032656361613734656135363366616561643835633663316238636461623434303265636161373465613536336661656164383563366331623863646162343430326563616137346561353633666165616438356336633162386364616234343032656361613734656135363366616  
561643835633663316238636461623434303265636161373465613536336661656164383563366331623863646162343430326563616137346561353633666165616438356336633162386364616234343032656361613734656135363366616561643835633663316238636461623434303265636161  
3734656135363366616561643835633663316238636461623434303265636161373465613536336661656164383563366331623863646162343430326563616137346561353633666165616438356336633162386364616234343032656361613734656135363366616561643835633663  
  7 |   4384 |        1 |    544 | 210387734 |         0 |        0 | (0,7)  |           2 |       2306 |     24 |        |       | \x0700000010080000626263336163623666626237373361383930633939343533383833646234646162626333616362366662623  
737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262  
633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333  
838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361  
3839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461  
  8 |   3840 |        1 |    544 | 210387734 | 210387736 |        0 | (0,8)  |        8194 |        258 |     24 |        |       | \x0800000010080000303465326439363635383635343566336262313338363165656535616365643630346532643936363538363  
534356633626231333836316565653561636564363034653264393636353836353435663362623133383631656565356163656436303465326439363635383635343566336262313338363165656535616365643630346532643936363538363534356633626231333836316565653561636564363034  
653264393636353836353435663362623133383631656565356163656436303465326439363635383635343566336262313338363165656535616365643630346532643936363538363534356633626231333836316565653561636564363034653264393636353836353435663362623133383631656  
565356163656436303465326439363635383635343566336262313338363165656535616365643630346532643936363538363534356633626231333836316565653561636564363034653264393636353836353435663362623133383631656565356163656436303465326439363635383635343566  
3362623133383631656565356163656436303465326439363635383635343566336262313338363165656535616365643630346532643936363538363534356633626231333836316565653561636564363034653264393636353836353435663362623133383631656565356163656436  
  9 |   3296 |        1 |    544 | 210387734 |         0 |        0 | (0,9)  |           2 |       2306 |     24 |        |       | \x0900000010080000386639333738633365313135653934323538366666336138323133656664306138663933373863336531313  
565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866  
393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383  
231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934  
3235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061  
 10 |   2752 |        1 |    544 | 210387734 | 210387736 |        0 | (0,10) |        8194 |        258 |     24 |        |       | \x0a00000010080000643962373365636264636538633333666634656638306362393966306138373264396237336563626463653  
863333366663465663830636239396630613837326439623733656362646365386333336666346566383063623939663061383732643962373365636264636538633333666634656638306362393966306138373264396237336563626463653863333366663465663830636239396630613837326439  
623733656362646365386333336666346566383063623939663061383732643962373365636264636538633333666634656638306362393966306138373264396237336563626463653863333366663465663830636239396630613837326439623733656362646365386333336666346566383063623  
939663061383732643962373365636264636538633333666634656638306362393966306138373264396237336563626463653863333366663465663830636239396630613837326439623733656362646365386333336666346566383063623939663061383732643962373365636264636538633333  
6666346566383063623939663061383732643962373365636264636538633333666634656638306362393966306138373264396237336563626463653863333366663465663830636239396630613837326439623733656362646365386333336666346566383063623939663061383732  
 11 |   2208 |        1 |    544 | 210387734 |         0 |        0 | (0,11) |           2 |       2306 |     24 |        |       | \x0b00000010080000633836333663333930336636613531383165356338303136316363376137633563383633366333393033663  
661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338  
363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363  
163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531  
3831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335  
 12 |   1664 |        1 |    544 | 210387734 | 210387736 |        0 | (0,12) |        8194 |        258 |     24 |        |       | \x0c00000010080000616665666266363465626661633431373230323364653736633335633033633761666566626636346562666  
163343137323032336465373663333563303363376166656662663634656266616334313732303233646537366333356330336337616665666266363465626661633431373230323364653736633335633033633761666566626636346562666163343137323032336465373663333563303363376166  
656662663634656266616334313732303233646537366333356330336337616665666266363465626661633431373230323364653736633335633033633761666566626636346562666163343137323032336465373663333563303363376166656662663634656266616334313732303233646537366  
333356330336337616665666266363465626661633431373230323364653736633335633033633761666566626636346562666163343137323032336465373663333563303363376166656662663634656266616334313732303233646537366333356330336337616665666266363465626661633431  
3732303233646537366333356330336337616665666266363465626661633431373230323364653736633335633033633761666566626636346562666163343137323032336465373663333563303363376166656662663634656266616334313732303233646537366333356330336337  
 13 |   1120 |        1 |    544 | 210387734 |         0 |        0 | (0,13) |           2 |       2306 |     24 |        |       | \x0d00000010080000323639636238656166623238383663666236623866326466616436643938656132363963623865616662323  
838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236  
396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666  
164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663  
6662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561  
 14 |    576 |        1 |    544 | 210387734 | 210387736 |        0 | (0,14) |        8194 |        258 |     24 |        |       | \x0e00000010080000313866653965363530616635383164623735326363306433303530633765363931386665396536353061663  
538316462373532636330643330353063376536393138666539653635306166353831646237353263633064333035306337653639313866653965363530616635383164623735326363306433303530633765363931386665396536353061663538316462373532636330643330353063376536393138  
666539653635306166353831646237353263633064333035306337653639313866653965363530616635383164623735326363306433303530633765363931386665396536353061663538316462373532636330643330353063376536393138666539653635306166353831646237353263633064333  
035306337653639313866653965363530616635383164623735326363306433303530633765363931386665396536353061663538316462373532636330643330353063376536393138666539653635306166353831646237353263633064333035306337653639313866653965363530616635383164  
6237353263633064333035306337653639313866653965363530616635383164623735326363306433303530633765363931386665396536353061663538316462373532636330643330353063376536393138666539653635306166353831646237353263633064333035306337653639  
(14 rows)  

10、查看lp信息和lp offset信息,现在还没有垃圾回收掉。

postgres=# select lp,lp_off from heap_page_items(get_raw_page('c', 0));  
 lp | lp_off   
----+--------  
  1 |   7648  
  2 |   7104  
  3 |   6560  
  4 |   6016  
  5 |   5472  
  6 |   4928  
  7 |   4384  
  8 |   3840  
  9 |   3296  
 10 |   2752  
 11 |   2208  
 12 |   1664  
 13 |   1120  
 14 |    576  
(14 rows)  

11、垃圾回收

postgres=# vacuum verbose c;  
INFO:  vacuuming "public.c"  
INFO:  "c": removed 13 row versions in 2 pages  
INFO:  "c": found 13 removable, 7 nonremovable row versions in 2 out of 2 pages  
DETAIL:  0 dead row versions cannot be removed yet, oldest xmin: 210387737  
There were 0 unused item pointers.  
Skipped 0 pages due to buffer pins, 0 frozen pages.  
0 pages are entirely empty.  
CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s.  
INFO:  "c": truncated 2 to 1 pages  
DETAIL:  CPU: user: 0.06 s, system: 0.00 s, elapsed: 0.06 s  
INFO:  vacuuming "pg_toast.pg_toast_228988"  
INFO:  index "pg_toast_228988_index" now contains 0 row versions in 1 pages  
DETAIL:  0 index row versions were removed.  
0 index pages have been deleted, 0 are currently reusable.  
CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s.  
INFO:  "pg_toast_228988": found 0 removable, 0 nonremovable row versions in 0 out of 0 pages  
DETAIL:  0 dead row versions cannot be removed yet, oldest xmin: 210387738  
There were 0 unused item pointers.  
Skipped 0 pages due to buffer pins, 0 frozen pages.  
0 pages are entirely empty.  
CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s.  
VACUUM  

12、垃圾回收后,lp信息都还在,但是,请注意lp里面存储的offset发生了变化,被回收的tuple,发生了MOVE,变紧凑了,并没有出现空洞。

被删除的tuple对应的lp, offset全部变成了0。

postgres=# select lp,lp_off from heap_page_items(get_raw_page('c', 0));  
 lp | lp_off   
----+--------  
  1 |   7648  
  2 |      0  
  3 |   7104  
  4 |      0  
  5 |   6560  
  6 |      0  
  7 |   6016  
  8 |      0  
  9 |   5472  
 10 |      0  
 11 |   4928  
 12 |      0  
 13 |   4384  
 14 |      0  
(14 rows)  

13、观察page内tuple详细信息

postgres=# select * from heap_page_items(get_raw_page('c', 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 |   7648 |        1 |    544 | 210387734 |      0 |        0 | (0,1)  |           2 |       2306 |     24 |        |       | \x0100000010080000343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132  
356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653  
764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137  
396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613  
3636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033  
  2 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
  3 |   7104 |        1 |    544 | 210387734 |      0 |        0 | (0,3)  |           2 |       2306 |     24 |        |       | \x0300000010080000613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630  
376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613  
866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565  
646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366  
5626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337  
  4 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
  5 |   6560 |        1 |    544 | 210387734 |      0 |        0 | (0,5)  |           2 |       2306 |     24 |        |       | \x0500000010080000316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039  
623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383  
431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766  
623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626  
6616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563  
  6 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
  7 |   6016 |        1 |    544 | 210387734 |      0 |        0 | (0,7)  |           2 |       2306 |     24 |        |       | \x0700000010080000626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737  
336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633  
361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838  
336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383  
9306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461  
  8 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
  9 |   5472 |        1 |    544 | 210387734 |      0 |        0 | (0,9)  |           2 |       2306 |     24 |        |       | \x0900000010080000386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565  
393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393  
337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231  
336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323  
5383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061  
 10 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
 11 |   4928 |        1 |    544 | 210387734 |      0 |        0 | (0,11) |           2 |       2306 |     24 |        |       | \x0b00000010080000633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661  
353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363  
336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163  
633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383  
1653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335  
 12 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
 13 |   4384 |        1 |    544 | 210387734 |      0 |        0 | (0,13) |           2 |       2306 |     24 |        |       | \x0d00000010080000323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838  
366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396  
362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164  
366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666  
2366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561  
 14 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
(14 rows)  

14、使用一个大tuple插入,再次验证垃圾回收后,page内的tuple已紧凑。

postgres=# select pg_column_size(repeat(md5(random()::text), 128));  
 pg_column_size   
----------------  
           4100  
(1 row)  
postgres=# insert into c select 100, repeat(md5(random()::text), 128);  
INSERT 0 1  
postgres=# select * from heap_page_items(get_raw_page('c', 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 |   7648 |        1 |    544 | 210387734 |      0 |        0 | (0,1)  |           2 |       2306 |     24 |        |       | \x0100000010080000343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132  
356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653  
764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137  
396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613  
3636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033  
  2 |   4264 |        1 |    119 | 210387738 |      0 |        0 | (0,2)  |           2 |       2050 |     24 |        |       | \x640000006e01000000100000003363646235333964003466333238313033003538373535346139003035333037336639ff0f20ff0f  
20ff0f20ff0f20ff0f20ff0f20ff0f20ff0f20ff7f0f20ff0f20ff0f20ff0f20ff0f20ff0f20ff0f20e0  
  3 |   7104 |        1 |    544 | 210387734 |      0 |        0 | (0,3)  |           2 |       2306 |     24 |        |       | \x0300000010080000613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630  
376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613  
866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565  
646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366  
5626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337  
  4 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
  5 |   6560 |        1 |    544 | 210387734 |      0 |        0 | (0,5)  |           2 |       2306 |     24 |        |       | \x0500000010080000316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039  
623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383  
431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766  
623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626  
6616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563  
  6 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
  7 |   6016 |        1 |    544 | 210387734 |      0 |        0 | (0,7)  |           2 |       2306 |     24 |        |       | \x0700000010080000626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737  
336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633  
361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838  
336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383  
9306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461  
  8 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
  9 |   5472 |        1 |    544 | 210387734 |      0 |        0 | (0,9)  |           2 |       2306 |     24 |        |       | \x0900000010080000386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565  
393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393  
337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231  
336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323  
5383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061  
 10 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
 11 |   4928 |        1 |    544 | 210387734 |      0 |        0 | (0,11) |           2 |       2306 |     24 |        |       | \x0b00000010080000633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661  
353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363  
336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163  
633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383  
1653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335  
 12 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
 13 |   4384 |        1 |    544 | 210387734 |      0 |        0 | (0,13) |           2 |       2306 |     24 |        |       | \x0d00000010080000323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838  
366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396  
362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164  
366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666  
2366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561  
 14 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
(14 rows)  

由于超过2K后,变长字段压缩了,实际上存到toast里面了,tuple上存的是指向toast的地址。

占用空间并不大,2号lp被用起来了。

postgres=# select lp,lp_off from heap_page_items(get_raw_page('c', 0));  
 lp | lp_off   
----+--------  
  1 |   7648  
  2 |   4264  
  3 |   7104  
  4 |      0  
  5 |   6560  
  6 |      0  
  7 |   6016  
  8 |      0  
  9 |   5472  
 10 |      0  
 11 |   4928  
 12 |      0  
 13 |   4384  
 14 |      0  
(14 rows)  

重新来一个小于2K长度的变成值进行插入。

postgres=# select pg_column_size(repeat(md5(random()::text), 60));  
 pg_column_size   
----------------  
           1924  
(1 row)  
postgres=# insert into c select 100, repeat(md5(random()::text), 60);  
INSERT 0 1  
postgres=# select * from heap_page_items(get_raw_page('c', 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 |   7648 |        1 |    544 | 210387734 |      0 |        0 | (0,1)  |           2 |       2306 |     24 |        |       | \x0100000010080000343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132  
356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653  
764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137  
396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033343065376462383965383461323564613  
3636234663661336137396137393033343065376462383965383461323564613363623466366133613739613739303334306537646238396538346132356461336362346636613361373961373930333430653764623839653834613235646133636234663661336137396137393033  
  2 |   4264 |        1 |    119 | 210387738 |      0 |        0 | (0,2)  |           2 |       2050 |     24 |        |       | \x640000006e01000000100000003363646235333964003466333238313033003538373535346139003035333037336639ff0f20ff0f  
20ff0f20ff0f20ff0f20ff0f20ff0f20ff0f20ff7f0f20ff0f20ff0f20ff0f20ff0f20ff0f20ff0f20e0  
  3 |   7104 |        1 |    544 | 210387734 |      0 |        0 | (0,3)  |           2 |       2306 |     24 |        |       | \x0300000010080000613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630  
376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613  
866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565  
646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337613361386662303965343066303763366  
5626638393232346565646336663337613361386662303965343066303763366562663839323234656564633666333761336138666230396534306630376336656266383932323465656463366633376133613866623039653430663037633665626638393232346565646336663337  
  4 |   2312 |        1 |   1952 | 210387739 |      0 |        0 | (0,4)  |           2 |       2050 |     24 |        |       | \x64000000101e0000336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231  
326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323  
731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164  
343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616  
566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739  
616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613  
363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938  
363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343  
632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633  
623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653  
761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132  
636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373  
137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434  
356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656  
639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961  
643436323132636165663938363365376164343561336366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336  
366336232373137396164343632313263616566393836336537616434356133636633623237313739616434363231326361656639383633653761643435613363663362323731373961643436323132636165663938363365376164343561336366  
  5 |   6560 |        1 |    544 | 210387734 |      0 |        0 | (0,5)  |           2 |       2306 |     24 |        |       | \x0500000010080000316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039  
623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383  
431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766  
623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563316338343165353030336530396232626  
6616363306237663766623863343563316338343165353030336530396232626661636330623766376662386334356331633834316535303033653039623262666163633062376637666238633435633163383431653530303365303962326266616363306237663766623863343563  
  6 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
  7 |   6016 |        1 |    544 | 210387734 |      0 |        0 | (0,7)  |           2 |       2306 |     24 |        |       | \x0700000010080000626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737  
336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633  
361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838  
336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461626263336163623666626237373361383  
9306339393435333838336462346461626263336163623666626237373361383930633939343533383833646234646162626333616362366662623737336138393063393934353338383364623464616262633361636236666262373733613839306339393435333838336462346461  
  8 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
  9 |   5472 |        1 |    544 | 210387734 |      0 |        0 | (0,9)  |           2 |       2306 |     24 |        |       | \x0900000010080000386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565  
393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393  
337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231  
336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061386639333738633365313135653934323  
5383666663361383231336566643061386639333738633365313135653934323538366666336138323133656664306138663933373863336531313565393432353836666633613832313365666430613866393337386333653131356539343235383666663361383231336566643061  
 10 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
 11 |   4928 |        1 |    544 | 210387734 |      0 |        0 | (0,11) |           2 |       2306 |     24 |        |       | \x0b00000010080000633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661  
353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363  
336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163  
633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335633836333663333930336636613531383  
1653563383031363163633761376335633836333663333930336636613531383165356338303136316363376137633563383633366333393033663661353138316535633830313631636337613763356338363336633339303366366135313831653563383031363163633761376335  
 12 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
 13 |   4384 |        1 |    544 | 210387734 |      0 |        0 | (0,13) |           2 |       2306 |     24 |        |       | \x0d00000010080000323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838  
366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396  
362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164  
366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561323639636238656166623238383663666  
2366238663264666164366439386561323639636238656166623238383663666236623866326466616436643938656132363963623865616662323838366366623662386632646661643664393865613236396362386561666232383836636662366238663264666164366439386561  
 14 |      0 |        0 |      0 |           |        |          |        |             |            |        |        |       |   
(14 rows)  

现在插进去的是正确的了,4号lp被用起来了,OFFSET到了2312字节。

postgres=# select lp,lp_off from heap_page_items(get_raw_page('c', 0));  
 lp | lp_off   
----+--------  
  1 |   7648  
  2 |   4264  
  3 |   7104  
  4 |   2312  
  5 |   6560  
  6 |      0  
  7 |   6016  
  8 |      0  
  9 |   5472  
 10 |      0  
 11 |   4928  
 12 |      0  
 13 |   4384  
 14 |      0  
(14 rows)  

小结

1、垃圾回收时,lp本身不变,这样索引可以保持不变。

2、页内move row , 只是lp offset 变化, 好处是PAGE内部不会膨胀,提高空间利用率。

参考

page inspect

vacuum 代码

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
7月前
|
关系型数据库 MySQL Unix
linux优化空间&完全卸载mysql——centos7.9
linux优化空间&完全卸载mysql——centos7.9
144 7
|
2月前
|
SQL 存储 关系型数据库
mysql 数据库空间统计sql
mysql 数据库空间统计sql
50 0
|
4月前
|
缓存 运维 监控
PostgreSQL运维技巧之vacuum调优
PostgreSQL运维技巧之vacuum调优
415 3
|
4月前
|
SQL 存储 关系型数据库
ADBPG&Greenplum成本优化问题之查询大表的dead tuple占比和空间如何解决
ADBPG&Greenplum成本优化问题之查询大表的dead tuple占比和空间如何解决
39 1
|
4月前
|
SQL 数据库 数据安全/隐私保护
CTFHUB 2021-第五空间 yet_another_mysql_injection
CTFHUB 2021-第五空间 yet_another_mysql_injection
48 0
|
6月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
153 2
|
7月前
|
自然语言处理 监控 关系型数据库
mysql造数据占用临时表空间
【5月更文挑战第20天】MySQL在处理复杂查询时可能使用临时表,可能导致性能下降。临时表用于排序、分组和连接操作。常见问题包括内存限制、未优化的查询、数据类型不当和临时表清理。避免过度占用的策略包括优化查询、调整系统参数、优化数据类型和事务管理。使用并行查询、分区表和监控工具也能帮助管理临时表空间。通过智能问答工具如通义灵码,可实时续写SQL和获取优化建议。注意监控`Created_tmp_tables`和`Created_tmp_disk_tables`以了解临时表使用状况。
460 5
|
6月前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之迁移到从polardb mysql的数据空间里是否需要修改数据源地址
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
存储 NoSQL 关系型数据库
深入探索地理空间查询:如何优雅地在MySQL、PostgreSQL及Redis中实现精准的地理数据存储与检索技巧
深入探索地理空间查询:如何优雅地在MySQL、PostgreSQL及Redis中实现精准的地理数据存储与检索技巧
2206 0
|
7月前
|
存储 关系型数据库 MySQL
9.3 【MySQL】系统表空间
9.3 【MySQL】系统表空间
96 0

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版