KingbaseES 中的xmin,xmax等系统字段说明
在KingbaseES中,當(dāng)我們創(chuàng)建一個(gè)數(shù)據(jù)表時(shí),數(shù)據(jù)庫會(huì)隱式增加幾個(gè)系統(tǒng)字段。這些字段由系統(tǒng)進(jìn)行維護(hù),用戶一般不會(huì)感知它們的存在。
例如,以下語句創(chuàng)建了一個(gè)簡單的表:
從定義上來看,表 test 中只有一個(gè)字段;但是當(dāng)我們查詢數(shù)據(jù)字典表 sys_attribute 時(shí),結(jié)果卻不是如此:
test=# \d test數(shù)據(jù)表 "public.test"欄位 | 類型 | 校對(duì)規(guī)則 | 可空的 | 預(yù)設(shè) ------+---------+----------+--------+------col | numeric test=# select attname, attnum, atttypid::regtype from sys_attribute where attrelid = 'test'::regclass;attname | attnum | atttypid ----------+--------+----------tableoid | -6 | oidcmax | -5 | cidxmax | -4 | xidcmin | -3 | cidxmin | -2 | xidctid | -1 | tidcol | 1 | numeric (7 行記錄)查詢結(jié)果顯示,表test一共包含7個(gè)字段。KingbaseES為我們?cè)黾恿?個(gè)額外的系統(tǒng)字段,它們的attnum屬性都是負(fù)數(shù)。
下面讓我們分別看看這些系統(tǒng)字段的作用。
tableoid
tableoid 字段代表了數(shù)據(jù)所在表的對(duì)象 id(OID),也就是數(shù)據(jù)字典表 sys_class 中與該表信息相關(guān)的數(shù)據(jù)行。
tableoid 的另一個(gè)用途就是在涉及分區(qū)表查詢或者UNION操作時(shí)標(biāo)識(shí)數(shù)據(jù)行所在的具體表(分區(qū))。例如存在以下分區(qū)表:
test=# create table t_list(a int,b int) test-# partition by list(a) test-# ( test(# partition p1 values (1,2,3,4,5), test(# partition p2 values (6,7,8,9,10) test(# ); CREATE TABLE test=# insert into t_list values(1,1); INSERT 0 1 test=# insert into t_list values(7,1); INSERT 0 1test=# select tableoid::regclass,a from t_list;tableoid | a -----------+---t_list_p1 | 1t_list_p2 | 7 (2 行記錄)ctid
ctid 字段代表了數(shù)據(jù)行在表中的物理位置,也就是行標(biāo)識(shí)(tuple identifier),由一對(duì)數(shù)值組成(塊編號(hào)和行索引)。ctid 類似于 Oracle 中的偽列 ROWID。
需要注意的是,ctid的值有可能會(huì)改變(例如 VACUUM FULL);因此ctid不適合作為一個(gè)長期的行標(biāo)識(shí),應(yīng)該使用主鍵作為行的邏輯標(biāo)識(shí)。
xmin
xmin代表了該行版本(row version)的插入事務(wù)ID(XID)。行版本是數(shù)據(jù)行的具體狀態(tài),每次更新操作都會(huì)為相同的邏輯行創(chuàng)建一個(gè)新的行版本(多版本并發(fā)控制,MVCC)。
xmin 字段可以用于查看數(shù)據(jù)行的插入時(shí)間,需要事先打開track_commit_timestamp參數(shù)(前兩行插入時(shí)參數(shù)未設(shè)置所以沒有查詢到時(shí)間)。
xmax
xmax 字段代表了刪除該行的事務(wù) ID,對(duì)于未刪除的行版本顯示為 0。非零的 xmax 通常意味著刪除事務(wù)還沒有提交,或者刪除操作被回滾。
cmin/cmax
代表元組變更的命令在插入事務(wù)中的命令標(biāo)識(shí)(從0開始累加)。
總結(jié)
以上是生活随笔為你收集整理的KingbaseES 中的xmin,xmax等系统字段说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Revit族自动化批量添加族参数
- 下一篇: java信息管理系统总结_java实现科