PostgreSQL


PostgreSQLのトランザクション ID の問題

PostgreSQL リリース 7.2

リリースノートより

トランザクション

トランザクションが 40 億を越えたインストレーションの問題はなくなりました。

OID

OID は省略できるようになりました。ユーザは OID の使用が多過ぎる場合に OID 無しのテーブルを作成することができます。

トランザクション ID の送り込み失敗の防止

PostgreSQL 7.2 の前まででは、XID の送り込みから保護する唯一の方法は最低でも 40 億トランザクション毎に initdb を再度行なうことでした。当然これは、トラフィックが多いサイトを十分に満足させることはありませんでしたので、より良い解決方法が案出されました。この新しい方法では、インストレーションを、initdb や再起動などなく、限界なく稼働状態とすることができます。この保守要求の代価は、データベースの各テーブルは、最低でも 10 億トランザクション毎に vacuum されなければならない、ということです。

==> 7.2.0 から仕様が変更されている模様。 initdb でデータベースを再作成する方法から、vaccum で未使用トランザクションIDを記録する方法へ変更。


PostgreSQL リリース 8.1

autovacumeの本体への追加

autovacume を起動するように設定していれば、必要時に自動的に vacuume が実行され、上記トランザクション ID の問題は発生しない。但し、性能に10〜20%程度の影響がある。
【PostgreSQLウォッチ】第22回 PostgreSQL 8.1,前バージョンから10カ月で早くも正式リリース! など。