PostgreSQL中的OID和XID 說明

來源:互聯網
上載者:User

oid: 行的物件識別碼(物件識別碼)。這個欄位只有在建立表的時候使用了 WITH OIDS ,或者是設定了default_with_oids 配置參數時出現。 這個欄位的類型是 oid (和欄位同名)。
例子: 複製代碼 代碼如下:CREATE TABLE pg_language
(
lanname name NOT NULL,
lanowner oid NOT NULL,
lanispl boolean NOT NULL,
lanpltrusted boolean NOT NULL,
lanplcallfoid oid NOT NULL,
lanvalidator oid NOT NULL,
lanacl aclitem[]
)
WITH (
OIDS=TRUE
);

OID 是 32 位的量,是在同一個叢集內通用的計數器上賦值的。 對於一個大型或者長時間使用的資料庫,這個計數器是有可能重疊的。 因此,假設 OID 是唯一的是非常錯誤的,除非你自己採取了措施來保證它們是唯一的。
XID:事務ID,也是 32 位的量。在長時間運轉的資料庫裡,它也可能會重疊。重疊後資料庫就有可能出錯,所以需要採取措施解決。 只要我們採取一些合適的維護步驟,這並不是很要命的問題。比如我們定義做vaccum。或者手動重設。
重設用下面的命令:
$ pg_resetxlog --help
pg_resetxlog命令是重設PostgreSQL事務log的。
使用方法:
pg_resetxlog [OPTION]... DATADIR
選項參數:
-e XIDEPOCH 設定下一個事務ID EPOCH
-f 實施強制更新
-l TLI,FILE,SEG 強制設定新事務log的最小WAL開始位置
-m XID 設定下一個MULTI事務ID
-n 不做更新,只是取出現在的控制值,實驗用的命令
-o OID 設定下一個OID,重設OID
-O OFFSET 設定下一個MULTI事務ID的OFFSET
-x XID 設定下一個事務ID,重設XID
寫了這麼一些,對內部是怎麼回事感覺自己還是沒有理清楚。呵呵!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.