/bonvhp/webapp2/PostgreSQL       [後へ]   [目次へ]   [次へ] ~ [] ~

PostgreSQL:メンテナンス

バキューム

PostgreSQL は、「追記型」と呼ばれる方式を採用しています。

データを削除する場合、
外部的には、もちろん削除されて見えますが、
データベースの内部的には、
データそのものを消したりはせずに、
該当データに削除マークを付けるだけです。
また、
更新する時でも、更新対象の既存のデータに削除マークを付けたうえで、
新しいデータを「追加」します。

追記型の長所は、何といっても動作が速い事です。
データを削除した後の隙間を埋めたり、
更新でデータ量が増えるときに、
追加分の領域を広げたり移動したりしなくて済むからです。

一方、短所は、
データを追記する一方なので、
どんどんデータのサイズが膨らんでしまう事です。

そこで、バキュームを使って、
不要なデータ領域を整理します。

バキュームの実行:PgAdmin

バキュームの実行の仕方の一つとして、PgAdmin を使う方法を紹介します。

具体的には、
・PgAdmin のデータベース名 (例えば sql_sample) を右クリック
・「Maintenance...」を選ぶ

・Maintenance operation:VACUUM
・Type of objects:FULL を On に。


・[OK]

しばらく待つと、バキュームが終了します。


Type of objects で設定した FULL を使うと、
より高度な整理ができますが、実行中にテーブルをロックする点に注意が必要です。
ロックされたテーブルは他からアクセスできないので、
データベースの実稼働中に VACUUM FULL をしてしまうと、
システム全体に大きな影響を与える可能性があります。

バキュームの実行:Auto VACUUM

PgAdmin の実行は簡単ですが、
一々、人手で実行するのは面倒です。

で、
VACUUM を定期的に自動実行してくれる、
Auto VACUUM という機能があります。
PostgreSQL V17 ではデフォルトで On です。

ただし、細かな調整を行いたい場合は postgresql.conf をいじる必要があり、
専門的なので、ここでは触れない事にします。
/bonvhp/webapp2/PostgreSQL       [後へ]   [目次へ]   [次へ]