PostgreSQL 11生産環境共通パラメータ構成参照
4615 ワード
背景
構築日:20190327バージョン:Postgresql-11サーバー構成:8コアcpu 16 GBメモリ.※比較的小さいですが、以下の構成はこの基準を例にします.Postgresqlサービス状態:単機yumインストール、データTBレベルであるが、同時性は高くなく、主にデータ分析に用いられる.主従をしていない.
プロファイルメソッドの変更
SET configuration_parameter TO DEFAULT;
:
UPDATE pg_settings SET setting = reset_val WHERE name = 'configuration_parameter';
プロファイルの再ロード
重点:生産パラメータ配置参考
各パラメータのデフォルト値は、別の記事、デフォルトパラメータを参照できます.
max_connections = 300
データベースの最大同時接続数を決定します.
shared_buffers =4GB
データベース・サーバで使用する共有メモリ・バッファの量を設定します.デフォルトは通常128メガバイト(128 MB)
VACUM、CREATE INDEX、ALTER TABLE ADD FOREGNKEYなどのメンテナンス操作で使用するメモリの最大量を指定します.このような操作は頻繁ではないので、workよりもmenはずいぶん大きいです.
次の3つのパラメータは、主に同時作業者の数を制御し、パフォーマンスに大きな影響を与えません。
max_worker_processes = 32
システムがサポートできるバックグラウンドプロセスの最大数は、多くのprocessesが取得する必要がある根源であるため、できるだけ十分なスレッド数を保証します.
max_parallel_workers = 4
パラレルワーカー数、max_worker_プロセス取得ですので、後者より大きくはできません.
各クエリーの並列作業者数は、上の2つより大きくできません.
プランナが単一のクエリーで使用可能な有効ディスクバッファサイズを設定すると、より高い値がインデックススキャンをより使用可能にし、より低い値がシーケンススキャンをより使用可能にします.推定の目的にのみ使用されます
ログ関連
logging_collector = on
ログコレクタの起動
log_destination = ‘csvlog’
stderr,csvlog,syslog,and eventlog(windows)ログ記録フォーマット、デフォルトはstderrです.csvlogはcsv形式で出力でき、分析しやすい.需要を分析していない場合は、個人的にデフォルトを推奨すればいいです.
log_directory = ‘log’
ログはPGDATAに出会った場所を格納します
log_filename = ‘postgresql-%a.log’
logログファイル名、ログ出力周波数を制御します.上は1週間保存し、毎日1つのlogログファイルです.
SQL監査関連ログ
log_min_duration_statement = 5s; (重要)
スロークエリログレコードは、5 s以上実行される文がスロークエリとみなされます.業務状況に応じて設定する.
log_duration = off
各文の時間が記録されます.
log_statement = ‘mod’
セッションがdeadlockを超えるまでロックを取得するtimeoutの場合、ログを記録するかどうか.
deadlock_timeout = 1s
デッドロック検出前に1つのロックで待機していた合計時間.
チェックポイント関連パラメータ
checkpoint_warning=30 sチェックポイント周波数チェック
チェックポイントが30 s未満の頻度でトリガーされると、logログにmax_を追加するように注意されます.wal_size.
checkpoint_timeout=30 minsチェックポイントトリガ間隔
自動チェックポイントの出発時間は、このパラメータの値を大きくするとクラッシュリカバリに要する時間が増加します.ディスクのパフォーマンスが良ければ、適切に削減できます.この値を小さくすると、チェックポイントの周波数が増加し、パフォーマンスが低下します.
max_wal_size = 8GB
min_wal_size = 1GB
WALディスクの使用率はこの設定より低く、古いWALファイルの総数は回収され、WALの使用中のピークを処理するのに十分なWAL空間が確保されている.
ふろく
log_duration=onとlog_min_duration_statement=0の違い前者はすべてのクエリー時間が記録され,後者はクエリー時間>0が記録される.一つの意味に聞こえる.
違い:log_min_duration_statementはSQLテキストを強制的に記録し、log_durationはSQLテキストを記録しません.
つまり、log_duration=on同時log_min_duration_statement=5 sの場合.
すべての文は時間が記録されますが、クエリが5 sを超える文だけがSQL文が記録されます.
個人的にはlog_durationは特殊なシーンでしか意味がない.log_min_duration_statementはもう十分です.
本稿ではパラメータ設定を主に参考とし,現れないパラメータは設定を必要としないという意味ではない.パラメータの意味とどのように設定するか分からないパラメータを設定するときは、この文章を参考にすることができます.