
PostgreSQL8.3系のAutovacuum不備?
現在、8.3.3を使用しておりますが、最近応答がかなり重くなりまして
手動にてvaccumを実施し対処しました。
インストール時のデフォルトで運用しているのですが
<値>
autovacuum | on
autovacuum_analyze_scale_factor | 0.1 autovacuum_analyze_threshold | 50 autovacuum_freeze_max_age | 200000000
autovacuum_max_workers | 3
autovacuum_naptime | 1min autovacuum_vacuum_cost_delay | 20ms autovacuum_vacuum_cost_limit | -1 autovacuum_vacuum_scale_factor | 0.2 autovacuum_vacuum_threshold | 50
かなり動作が重くなっても、自動実行されない模様です(閾値が合わない)。
そもそもチューニングすべき物なのでしょうか?
お詳しい方、ご教授頂けないでしょうか?宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
VACUUM が適切に実行されずに性能が低下していることを前提として回答します。
更新頻度の高い巨大なテーブルが存在する場合には、自動バキュームの設定をテーブルごとに調整したほうがいいと思います。
デフォルトの設定のままでは、UPDATE や DELETE で不要になった行が 50 行 (autovacuum_vacuum_threshold) + 全行数の 2 割 (autovacuum_vacuum_scale_factor) を超えた場合に VACUUM が実行されます。
例えば、テーブルの行数が 100,000 行の場合には不要な行が 20,050 行を超えると VACUUM が実行されますが、100,000,000 の場合には 20,050,000 行を超えるまで実行されません。同じ 2 割であっても 2 万行と 2 千万行では性能への影響が違います。
PostgreSQL 8.3 であれば、pg_autovacuum テーブルにエントリを追加すればテーブルごとに自動バキュームの設定を行うことができます (参考 URL を見てください)。
あと、その他に気になることとしては、デフォルトでは自動バキュームで同時に起動できる VACUUM は 3 つ (autovacuum_max_workers) までなので、更新頻度の高いテーブルが大量に存在する場合には、自動バキュームが特定のテーブルへの VACUUM につきっきりになってしまい、VACUUM の実行されないテーブルが発生して性能が低下してしまう場合があります。
参考URL:http://www.postgresql.jp/document/8.3/html/catal …
yamada59様 早々のレスありがとう御座います。
大変参考に成ります。
92テーブルの内、1、2テーブルが日の更新作業にて、
1万数千レコードのごみデータが、発生します。
社内テスト用DBサーバで試しまして、本番へ適用したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT 文の NULL列は?
-
2つのテーブルで引き算 postgres
-
PostgreSQL 8.0.2 の ERROR: r...
-
テーブルに存在しない列をselec...
-
テーブル定義書作成時のIndex付...
-
SQLでUPSERTを一度に複数行やる...
-
複数テーブルにまたがるmax
-
SQL 同じテーブル構造の複数の...
-
インデックスについて
-
テーブルにcsvファイルをインポ...
-
SQLにて指定日付より前、かつ最...
-
単純なselectが遅くなるのです...
-
VARCHAR型の数値比較
-
SQL*LoaderでCSVから指定した列...
-
SQL、2つのテーブルで条件一致...
-
外部キーだけのテーブル(主キ...
-
「テーブルに座って……」という...
-
一つ前に戻るには…
-
カラム位置変更
-
会社の飲み会の幹事になり、座...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文の NULL列は?
-
テーブルに存在しない列をselec...
-
SQLにて指定日付より前、かつ最...
-
SQLでUPSERTを一度に複数行やる...
-
PostgreSQLの断片化の状況を確...
-
単純なselectが遅くなるのです...
-
MS Access から PostgreSQL へ...
-
javaでデータベース上のテーブ...
-
2つのテーブルで引き算 postgres
-
Postgresqlのレポート機能について
-
reindex と update のデッドロック
-
Postgresのデータ領域の拡張に...
-
デットロック回避策(autocommit...
-
テーブルにcsvファイルをインポ...
-
PostgreSQL 8.0.2 の ERROR: r...
-
PostgreSQL レコードからアイテ...
-
同一カラムに複数条件指定
-
備品管理のデータベースについて
-
PostgresSQLでテーブル定義の抽...
-
DISTINCTとGROUP BYの違い
おすすめ情報