
作者:金涛
PostgreSQL新增extension pg_surgery, 提供了两个函数:
heap_force_freeze - 强制要冻结tuple
heap_force_kill - 强制删除tuple
jintao@jintao-ThinkPad-L490:~/personal/code/postgresql-master$ psql psql (14devel)Type 'help' for help.mydb=# select version(); version --------------------------------------------------------------------------------------------------------- PostgreSQL 14devel on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit(1 row)mydb=# create extension pg_surgery ;CREATE EXTENSIONmydb=# mydb=# \dx+ pg_surgery Objects in extension 'pg_surgery' Object description -------------------------------------------- function heap_force_freeze(regclass,tid[]) function heap_force_kill(regclass,tid[])(2 rows)mydb=# create table test_surgery(id int);CREATE TABLEmydb=# mydb=# insert into test_surgery select generate_series(1,5);INSERT 0 5mydb=# mydb=# select xmin, ctid, id from test_surgery ; xmin | ctid | id ------+-------+---- 836 | (0,1) | 1 836 | (0,2) | 2 836 | (0,3) | 3 836 | (0,4) | 4 836 | (0,5) | 5(5 rows)mydb=# select heap_force_freeze('test_surgery'::regclass, array[ '(0,1)' ]::tid[]); /*freeze单个ctid*/ heap_force_freeze -------------------(1 row)mydb=# select xmin, ctid, id from test_surgery ; xmin | ctid | id ------+-------+---- 2 | (0,1) | 1 836 | (0,2) | 2 836 | (0,3) | 3 836 | (0,4) | 4 836 | (0,5) | 5(5 rows)mydb=# select heap_force_freeze('test_surgery'::regclass, array[ '(0,2)', '(0,5)' ]::tid[]); /*freeze单个ctid*/ heap_force_freeze -------------------(1 row)mydb=# select xmin, ctid, id from test_surgery ; xmin | ctid | id ------+-------+---- 2 | (0,1) | 1 2 | (0,2) | 2 836 | (0,3) | 3 836 | (0,4) | 4 2 | (0,5) | 5(5 rows)mydb=# mydb=# select heap_force_kill('test_surgery'::regclass, array[ '(0,1)' ]::tid[]); /*删除单个ctid tuple */ heap_force_kill -----------------(1 row)mydb=# select xmin, ctid, id from test_surgery ; xmin | ctid | id ------+-------+---- 2 | (0,2) | 2 836 | (0,3) | 3 836 | (0,4) | 4 2 | (0,5) | 5(4 rows)mydb=# select heap_force_kill('test_surgery'::regclass, array[ '(0,3)', '(0,5)' ]::tid[]); /*删除多个ctid tuple*/ heap_force_kill -----------------(1 row)mydb=# select xmin, ctid, id from test_surgery ; xmin | ctid | id ------+-------+---- 2 | (0,2) | 2 836 | (0,4) | 4(2 rows)mydb=#





新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序

更多新闻资讯,行业动态,技术热点,请关注中国PostgreSQL分会官方网站
https://www.postgresqlchina.com
中国PostgreSQL分会生态产品
https://www.pgfans.cn
中国PostgreSQL分会资源下载站
https://www.postgreshub.cn


点赞、在看、分享、收藏
文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




