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で質問しましょう!
似たような質問が見つかりました
- 英語 Recently, Parween et al. [40] performed a randomiz 2 2022/05/24 16:03
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- オープンソース Pythonのコードをexe化 1 2023/07/03 08:01
- CPU・メモリ・マザーボード Razer Blade15 でのゲーム動作について 2 2023/01/30 22:13
- 日用品・生活雑貨 ★両親の生前の所有物の処分について 4 2022/04/18 13:25
- PostgreSQL SQLでUPSERTを一度に複数行やる方法 3 2022/03/25 15:17
- ノートパソコン Windows 10 動作改善方法 6 2023/04/26 22:30
- その他(音楽・ダンス・舞台芸能) 手描き動画の楽曲使用について 2 2023/02/11 00:59
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- 面接・履歴書・職務経歴書 こちらの文を添削して頂きたいです。 (現在パートで働いており、転職活動で使用します) 言い回しや付け 6 2023/02/08 13:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT 文の NULL列は?
-
テーブルに存在しない列をselec...
-
MS Access から PostgreSQL へ...
-
PostgreSQLの断片化の状況を確...
-
複数テーブルにまたがるmax
-
SQLにて指定日付より前、かつ最...
-
単純なselectが遅くなるのです...
-
Insertで重複となったキーをさ...
-
update文で改行を入れる
-
テーブルリンク リンク元を知...
-
テーブル名をカラムとして取得...
-
一つ前に戻るには…
-
Accessのテーブルデータを一気...
-
Accessでデータシートに同じデ...
-
会社の飲み会の幹事になり、座...
-
Notion@リレーション値の取得...
-
件数の多い順にselect
-
うまくいきません教えてくださ...
-
外部キーだけのテーブル(主キ...
-
SQL、2つのテーブルで条件一致...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文の NULL列は?
-
SQLにて指定日付より前、かつ最...
-
テーブルに存在しない列をselec...
-
SQLでUPSERTを一度に複数行やる...
-
単純なselectが遅くなるのです...
-
PostgreSQLの断片化の状況を確...
-
javaでデータベース上のテーブ...
-
2つのテーブルで引き算 postgres
-
PostgreSQL レコードからアイテ...
-
Postgresのデータ領域の拡張に...
-
Postgresqlのレポート機能について
-
VIEWのCOPYってできないんですか?
-
POSTGRESQL 検索スピードが遅い
-
Pythonで2つのデータ(キー無し...
-
備品管理のデータベースについて
-
最新レコードを抽出し外部結合...
-
重複を許すキーの構文がわかり...
-
データのマッチングです。お願...
-
テーブルにcsvファイルをインポ...
-
postgreSQL カラムの全ての値を...
おすすめ情報