メモリ
メモリモデル
PostgreSQLは起動時に、データ処理の効率化と信頼性向上のために、共有メモリ上に3つのメモリ領域を確保する。
バックエンドプロセス毎にも、ソートメモリ領域(sort_mem)とVACUUMメモリ領域を確保する。
共有メモリのメモリ領域
- 共有バッファ(shared buffer)
更新や検索などのデータ操作時に、データを読み込む領域。キャッシュとしての機能。
- WALバッファ(WAL buffer)
トランザクションログを保存する機構(WAL:Write Ahead Logging)をバッファするためのもの。
- 空き領域アップ(Free Space Map)
不要になったデータ領域を記録する。
バックエンドプロセスのメモリ領域
バックエンドプロセス毎に、ソートメモリ領域(sort_mem)とVACUUMメモリ領域(vacuum_mem)を確保する。
常時確保されているわけではなく、動的に確保される。それぞれの作業時に確保され、実行後解放される。
- ソートメモリ領域(sort_mem)
プランナが問い合わせ実行計画を作成するときに使う。
大きなテーブルを処理する場合には、このメモリ領域を大きく設定する必要がある。
- VACUUMメモリ領域(vacuum_mem)
VACUUM処理実行時に一時的に確保するメモリ領域。
:PostgreSQL