LoginSignup
14
22

More than 5 years have passed since last update.

「VACUUM ANALYZE」によって手動で不要領域を回収して統計情報の再計算を行う

Last updated at Posted at 2014-12-12

はじめに

PostgresSQLにおいてテーブルの行や列を削除した時、VACUUMが実行されるまでテーブルから物理的には削除されない。
不要領域を回収するVACUUMは、PostgresSQLが自動的に実行してくれる。
しかし、まれに特定のテーブルだけ実行されないことがあり、
実行計画において削除したはずの列を参照してしまい、SQLの実行が成功しない場合がある。
この場合、手動でVACUUMを実行し、統計情報を再計算する。

SQLの実行手順

統計情報テーブルのカラム「last_vacuum」「last_analyze」を確認する。ここに直近にVACUUMした日付が入る
select * from pg_stat_all_tables where relname = 'テーブル名をここに記入';

不要領域を回収し統計情報を再計算する。トランザクション(begin,commit)は不要
VACUUM ANALYZE テーブル名をここに記入;

カラム「last_vacuum」「last_analyze」の日付をを確認して更新されていることを確認する
select * from pg_stat_all_tables where relname = 'テーブル名をここに記入';

参考

14
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
22