PostgreSQLスキルアップノート(自己啓発のための個人サイト)

バキューム・関連パラメータとチューニング


【一覧に戻る】
マニュアルへのリンクは9.2としています。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ バキューム・関連パラメータ
■■■■
■■■■
■■■■ 2013/02/24
■■■■ 使用環境:PostgreSQL9.1.7 (CentOS6.2)
                                                                   (C) 2013 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌───────┐
│全般に未整備  │
└───────┘

【マニュアル】
・第18章サーバの設定・自動Vacuum作業→●[マニュアル]
・第18章サーバの設定・コストに基づくVacuum遅延  →●[マニュアル]

【マニュアル参考】

・VACUUM概要   →●[マニュアル]
・vacuumdbコマンド →●[マニュアル]
・VACUUM文         →●[マニュアル]




■1■ 特に重要と思われるもの
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一部アナライズも含む

maintenance_work_mem          
log_autovacuum_min_duration 
autovacuum_max_workers
autovacuum_naptime
autovacuum_vacuum_scale_factor
autovacuum_analyze_scale_factor




■2■ 詳細・共通のパラメータ・maintenance_work_mem
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

maintenance_work_memは保守操作で使用されるメモリ最大容量。

#maintenance_work_mem = 16MB          

・バキューム専用のパラメータではないがバキューム中心で値を決めるべきパラメータ
・VACUUMの他、CREATE INDEXやALTER TABLE ADD FOREIGN KEYなどで使われる。
・デフォルト16MB
・関連するセッションは限られるのでwork_memよりもかなり大きめにとるのが一般的。
・ただしautovacuumのワーカ数分×設定値となるので注意。



■3■ 詳細・自動バキューム(autovacuum)のパラメータ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

第18章サーバの設定・自動Vacuum作業→●[マニュアル]

定常的なバキューム作業→●[マニュアル]


【□】 grep -i autovacuum postgresql.conf

# AUTOVACUUM PARAMETERS
#autovacuum = on                        
#log_autovacuum_min_duration = -1       
log_autovacuum_min_duration = 0 
#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      


1.autovacuumの機能有効/無効
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

#autovacuum = on 

・有効にするにはtrack_counts = onも必要。(通常はon)
・このパラメータに関わらず「xid周回防止目的のvacuum」は実行される。



2.autovacuum実行の制御  ログ記録/プロセス数/周期/負荷制御等
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

(1)ログ記録

#log_autovacuum_min_duration = -1      
log_autovacuum_min_duration = 0      

指定した数値(ミリ秒)以上の実行がログに記録される。
デフォルトは-1で一切記録されない。
0の場合は全部記録


(2)ワーカの最大の同時実行数

#autovacuum_max_workers = 3            


(3)自動バキュームの周期        ※naptimeは「お昼寝」

#autovacuum_naptime = 1min 


(4)コストに基づく遅延関連

#autovacuum_vacuum_cost_delay = 20ms    
#autovacuum_vacuum_cost_limit = -1      
┌───────┐
│この項未整理  │
└───────┘



3.autovacuum対象閾値関連
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


バキューム基礎閾値 #autovacuum_vacuum_threshold = 50       
バキューム規模係数 #autovacuum_vacuum_scale_factor = 0.2   

バキューム閾値 = バキューム基礎閾値 + バキューム規模係数 * タプル数


解析基礎閾値       #autovacuum_analyze_threshold = 50      
解析規模係数       #autovacuum_analyze_scale_factor = 0.1  

解析閾値 = 解析基礎閾値 + 解析規模係数 * タプル数


・thresholdは更新タプル数(基礎閾値)
・scale_factorは更新タプルの割合(規模係数)
基礎閾値の更新タプル数とテーブルの規模に対する更新割合
を足したものがバキューム、解析(アナライズ)の閾値となる。

・100万件のテーブルなら20万50件がバキューム契機となる閾値

   ※ここでの更新タプルとは
     vacuumの場合は更新、削除
     analyzeの場合は挿入、更新、削除




4.その他
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

#autovacuum_freeze_max_age = 200000000  # maximum XID age before forced vacuum
┌───────┐
│この項未整理  │
└───────┘





■3■ 詳細・バキューム(vacuum)のパラメータ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1.コストに基づくVacuum遅延のパラメータ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

vacuum_cost_〜は「コストに基づくVacuum遅延」のパラメータ

・第18章サーバの設定・コストに基づくVacuum遅延  →●[マニュアル]


【□】  grep -i vacuum_cost postgresql.conf

# - Cost-Based Vacuum Delay -
#vacuum_cost_delay = 0ms                # 0-100 milliseconds
#vacuum_cost_page_hit = 1               # 0-10000 credits
#vacuum_cost_page_miss = 10             # 0-10000 credits
#vacuum_cost_page_dirty = 20            # 0-10000 credits
#vacuum_cost_limit = 200                # 1-10000 credits

┌───────┐
│この項未整理  │
└───────┘


2.それ以外
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

# REPLICATION
#vacuum_defer_cleanup_age = 0   # number of xacts by which cleanup is delayed

# CLIENT CONNECTION DEFAULTS
#vacuum_freeze_min_age = 50000000
#vacuum_freeze_table_age = 150000000

┌───────┐
│この項未整理  │
└───────┘




以上 
inserted by FC2 system