Postgresの読み込みが書き込みを引き起こす理由:MVCC、ページのプルーニング、ヒントビット
2024-12-25
この記事では、PostgreSQLにおける一見矛盾する動作、つまり単純なSELECTクエリがデータ書き込みを引き起こす理由について詳しく説明します。マルチバージョンコンカレンシーコントロール(MVCC)メカニズムから始め、行バージョン、ページ、タプルの概念を説明します。コード例を通して、ヒントビットの更新とページのプルーニングが、読み込み操作によってページが変更され、最終的にディスクへの書き込みにつながる仕組みを分析します。また、HOT更新最適化戦略についても説明し、ページ検査ツールを使用して、データがページ内にどのように格納され、更新されるかを示します。