Postgresql页面xmax与multixact
生活随笔
收集整理的這篇文章主要介紹了
Postgresql页面xmax与multixact
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
結(jié)論1:
結(jié)論2:
注意到PG使用xmax記錄行鎖的事務(wù)ID,那么判斷行鎖還有沒(méi)有就依賴xid的狀態(tài)了,也就是CLOG。
在vacuum freeze的時(shí)候如果看到xmax上記錄的事務(wù)ID過(guò)舊,也需要freeze的:
- vacuum_multixact_freeze_min_age 同 autovacuum_freeze_max_age : 五千萬(wàn)開始正常vacuum freeze,用最新xid-五千萬(wàn)=Limit,掃描頁(yè)面如果有臟數(shù)據(jù)順便freeze。
- autovacuum_multixact_freeze_max_age 同 autovacuum_multixact_freeze_max_age : 兩億開始eager freeze取oldxmin為L(zhǎng)imit,用Limit來(lái)freeze所有頁(yè)面。
正常保存
create table m7(id int primary key, info text); insert into m7 select generate_series(1,10), md5(random()::text); select 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 from heap_page_items(get_raw_page('m7',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 ----+--------+----------+--------+------------+--------+----------+--------+-------------+------------+--------+--------+-------1 | 8128 | 1 | 61 | 1477538885 | 0 | 0 | (0,1) | 2 | 2050 | 24 | | 2 | 8064 | 1 | 61 | 1477538885 | 0 | 0 | (0,2) | 2 | 2050 | 24 | | 3 | 8000 | 1 | 61 | 1477538885 | 0 | 0 | (0,3) | 2 | 2050 | 24 | | 4 | 7936 | 1 | 61 | 1477538885 | 0 | 0 | (0,4) | 2 | 2050 | 24 | | 5 | 7872 | 1 | 61 | 1477538885 | 0 | 0 | (0,5) | 2 | 2050 | 24 | | 6 | 7808 | 1 | 61 | 1477538885 | 0 | 0 | (0,6) | 2 | 2050 | 24 | | 7 | 7744 | 1 | 61 | 1477538885 | 0 | 0 | (0,7) | 2 | 2050 | 24 | | 8 | 7680 | 1 | 61 | 1477538885 | 0 | 0 | (0,8) | 2 | 2050 | 24 | | 9 | 7616 | 1 | 61 | 1477538885 | 0 | 0 | (0,9) | 2 | 2050 | 24 | | 10 | 7552 | 1 | 61 | 1477538885 | 0 | 0 | (0,10) | 2 | 2050 | 24 | | postgres=# select lp,lp_len,t_xmin,t_xmax,t_ctid,t_infomask2,t_infomask,t_hoff from heap_page_items(get_raw_page('m7',0));lp | lp_len | t_xmin | t_xmax | t_ctid | t_infomask2 | t_infomask | t_hoff ----+--------+------------+------------+--------+-------------+------------+--------1 | 61 | 1477538885 | 1477538886 | (0,1) | 8194 | 258 | 242 | 61 | 1477538885 | 0 | (0,2) | 2 | 2050 | 243 | 61 | 1477538885 | 0 | (0,3) | 2 | 2050 | 244 | 61 | 1477538885 | 0 | (0,4) | 2 | 2050 | 245 | 61 | 1477538885 | 0 | (0,5) | 2 | 2050 | 246 | 61 | 1477538885 | 0 | (0,6) | 2 | 2050 | 247 | 61 | 1477538885 | 0 | (0,7) | 2 | 2050 | 248 | 61 | 1477538885 | 0 | (0,8) | 2 | 2050 | 249 | 61 | 1477538885 | 0 | (0,9) | 2 | 2050 | 2410 | 61 | 1477538885 | 0 | (0,10) | 2 | 2050 | 24id=1刪除提交
id=2刪除回滾
id=3行讀鎖
id=4行寫鎖
id=5行2讀鎖
postgres=# select lp,lp_len,t_xmin,t_xmax,t_ctid,t_infomask2,t_infomask,t_hoff from heap_page_items(get_raw_page('m7',0));lp | lp_len | t_xmin | t_xmax | t_ctid | t_infomask2 | t_infomask | t_hoff ----+--------+------------+------------+--------+-------------+------------+--------1 | 61 | 1477538885 | 1477538886 | (0,1) | 8194 | 258 | 242 | 61 | 1477538885 | 1477538887 | (0,2) | 8194 | 258 | 243 | 61 | 1477538885 | 1477538889 | (0,3) | 2 | 466 | 244 | 61 | 1477538885 | 1477538890 | (0,4) | 8194 | 450 | 245 | 61 | 1477538885 | 343 | (0,5) | 2 | 4562 | 246 | 61 | 1477538885 | 0 | (0,6) | 2 | 2050 | 247 | 61 | 1477538885 | 0 | (0,7) | 2 | 2050 | 248 | 61 | 1477538885 | 0 | (0,8) | 2 | 2050 | 249 | 61 | 1477538885 | 0 | (0,9) | 2 | 2050 | 2410 | 61 | 1477538885 | 0 | (0,10) | 2 | 2050 | 24t_infomask 258: HEAP_HASVARWIDTH | HEAP_XMIN_COMMITTED 466: HEAP_HASVARWIDTH | HEAP_XMAX_KEYSHR_LOCK | HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_LOCK_ONLY | HEAP_XMIN_COMMITTED 450: HEAP_HASVARWIDTH | HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_LOCK_ONLY | HEAP_XMIN_COMMITTED 4562: HEAP_HASVARWIDTH | HEAP_XMAX_KEYSHR_LOCK | HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_LOCK_ONLY | HEAP_XMIN_COMMITTED | HEAP_XMAX_IS_MULTI 2050: HEAP_HASVARWIDTH | HEAP_XMAX_INVALIDt_infomask2 8194: 0010000000000010 : HEAP_KEYS_UPDATED | 低11位保存元素?cái)?shù)量,這里是兩列 2 : 0000000000000010 : 低11位保存元素?cái)?shù)量,這里是兩列總結(jié)
以上是生活随笔為你收集整理的Postgresql页面xmax与multixact的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenGL3D图形、旋转、纹理、键盘移
- 下一篇: 信息系统自动决策机制的使用