部門表には元々3行のデータが格納されていました。インサート当時のXID=10でした。その後に、部門コード"001"の部門名が変更になった為、update文が実行されたとします。 (1)部門名変更のUPDATE文を実行 (2)行を特定するOIDはそのまま継承し、修正された新たな行を末尾に追加 元のOID=5001,XID=10の行には無効の印が付けられる。 (3)以後のトランザクションでは新しい OID=5001,XID=93の行が検索される。 ここで追記型の弱点が見えてきますが、それは無効とされた行の扱いの問題です。 PostgreSQLでは、削除や更新された古いデータ行が残っています。テーブルは1つの物理ファイルですから、OLTP処理などの更新が多数発生する場合は、本来のデータ量と変更前の履歴データをすべて抱え込む事になってしまい、次第に肥大化していきます。 この為に、検索時の負荷が増大