IT用語集 › データベース › XIDラップアラウンド

XIDラップアラウンド

データベース Svenska → 更新: 2026-10-22

PostgreSQLのトランザクションIDは32ビットで、一周して戻ってくる。古いIDを間に合うように退役させないと、データベースは書き込みを一切受け付けなくなる。

行の可視性は、その行を作ったトランザクションが自分より前か後かで決まる。しかし循環するカウンターに絶対的な「前」はなく、空間の半分が過去、半分が未来として扱われる。古い行が20億の境界を越えると、突然未来から来たように見えて不可視になってしまう。だからautovacuumは古い行をフリーズし、恒久的に可視だと印を付ける。放置が進むとサーバーは警告を出し始め、残りIDが100万になると書き込みを停止して、シングルユーザーモードでのvacuumを要求する。よく運用されているPostgresで、数日に及ぶ計画外停止を起こす数少ない既知の原因の一つである。

← 用語集に戻る