🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

1回答

3858閲覧

postgresql 9.2で特定のテーブルでautovacuumが実施されない。

jiro0904k

総合スコア4

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

1クリップ

投稿2019/10/18 07:52

前提・実現したいこと

初めまして。
postgresql 9.2を使用しているのですが、特定の1テーブルだけautovacuumが実行されず、困っております。
autovacuumが正常に動作するようにしたいです。

お力添えいただいたけますと幸いです。

発生している問題・エラーメッセージ

特定のテーブルのみautovacuumが実施されない。

・バキューム閾値は超えている。(n_live_tupが約60億、n_dead_tupが約50億)
・他のテーブルではバキューム閾値を超えると正しくautovacuumが実施される。

該当のソースコード

postgresqlのautovacuum関連のパラメーターは下記の通り。

autovacuum = on
log_autovacuum_min_duration = -1
autovacuum_max_workers = 3
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.1
autovacuum_freeze_max_age = 200000000
autovacuum_vacuum_cost_delay = 20ms
autovacuum_vacuum_cost_limit = -1

試したこと

・手動でvacuumを実施すると問題なく実行される。(n_dead_tupが0になることを確認。)
・テーブル毎の設定が入っているか確認したが、何もなかった。

補足情報(FW/ツールのバージョンなど)

・autovacuumが実行されないテーブルがあるDBは17つのテーブルがあり、
autovacuumが実行されないテーブルは他のテーブルと比べてデータ量が100倍近くある。
・autovacuumが実行されないテーブルでanalyzeを実施しても、select count(*)の数とn_live_tupの数に大きく差がある。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

空き容量が不足しているのかもしれません。
※手動だと上手くいくというので当てはまらないかもしれませんが。
インデックスを削除し、vaccum fullを実行してみて下さい。
PostgreSQL Vacuum について

23.1. 定常的なバキューム作業

23.1.2. ディスク容量の復旧
ティップ: 大規模な更新や削除作業の結果としてテーブルが不要な行バージョンを大量に含む場合、通常のVACUUMでは満足のゆくものではないかもしれません。 もしそのようなテーブルを所有し、それが占有する余分なディスク空間の回収が必要であれば、VACUUM FULL、またはその代わりにCLUSTERやテーブルを書き換えるALTER TABLE構文の1つを使用しなければなりません。 これらのコマンドはテーブル全体を新しいコピーに書き換え、それに対する新規インデックスを作成します。 これらの選択肢はすべて排他ロックを必要とします。

新しいものが完成するまで、テーブルの旧コピーとインデックスは解放されませんので、元のテーブルと同程度の容量の余計なディスク領域も一時的に使用することに注意してください。

投稿2019/10/18 10:29

編集2019/10/18 10:34
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問