[pgsql-jp: 39961] Re: OIDとXIDを使いきると?

Itagaki Takahiro itagaki.takahiro @ oss.ntt.co.jp
2009年 8月 14日 (金) 15:05:04 JST


板垣です。

加藤 健太 <kenta @ diverta.co.jp> wrote:

> OID・・カラムやインデックスなどのPostgreSQL内の各オブジェクトのユニークなID
> XID・・データ操作(select,updateなど)のトランザクション毎のユニークなID
> 
> OIDはそうそう使い切らないと思うのですが、

OID については、確かに、ユーザテーブルは WITHOUT OID で作り、
temp テーブルの使いすぎに注意すれば、たぶん周回はしないと思います。

想定は v8.0 ということですが、v8.1 以降であれば以下の改善により、
さらに安心になっています。
http://www.postgresql.jp/document/current/html/release-8-1.html
| OIDカウンタが周回した後に生じる、既存のシステムオブジェクトと
| オブジェクトID(OID)が競合する問題を修正しました。 


> XIDはバキュームをしていないと使い切ってしまいます。

定期的にデータベース単位の VACUUM (テーブル単位ではダメ)が必要です。
VACUUM だけやっておけば、データベースは止めずに済むはずです。
あと、template1 に対する VACUUM は忘れやすいので、ご注意を。

XID 周回についても、新しいバージョンほど管理が自動されています。
特に 8.2 以降ならば、データロストだけは確実に防げるようになっています。
8.0 だと、まだ自衛機能がありません。うっかり周回させてしまうと、
古いデータから順に消えていってしまいますので、こちらもご注意ください。

------------------------------------------------------------
NTT オープンソース ソフトウェア センタ
板垣貴裕 <itagaki.takahiro @ oss.ntt.co.jp>





pgsql-jp メーリングリストの案内