凍結と XID の年齢の使い方
トランザクション ID の周回を防ぐ
書き方
SELECT datname, age(datfrozenxid) FROM pg_database; SELECT relname, age(relfrozenxid) FROM pg_class WHERE relkind = 'r'; VACUUM FREEZE 表;
トランザクション ID(XID)は約 21 億で一周します。古い行は「凍結」して、どの XID よりも古いと印を付けておく必要があります。age(relfrozenxid) は、その表でまだ凍結していない一番古い XID からの年齢です。autovacuum_freeze_max_age(既定 2 億)を超えると、autovacuum を止めていても周回を防ぐ VACUUM が動きます。VACUUM FREEZE はすぐに凍結します。
例
VACUUM FREEZE old_ledger; SELECT age(datfrozenxid) FROM pg_database WHERE datname = 'quest';
実際に打って練習する
PostgreSQL DBA コースの Lv30「凍結と周回 XID wraparound」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。