Optimiser une instance PostgreSQL
Luc LAMARLE, Mathieu RIBES, Frédéric YHUEL
shared_buffers
work_mem
)maintenance_work_mem
)max_wal_size
(réduire les FPI et donc les I/O)jit
(à désactiver globalement)max_worker_processes
,
max_parallel_[maintenance]_workers
log_min_duration_statements
= <temps minimal
d’exécution>
0
permet de tracer toutes les requêteslog_min_duration_sample
= <temps minimal
d’exécution>
log_statement_sample_rate
et/ou
log_transaction_sample_rate
log_temp_files = \<taille minimale\>
0
trace tous les fichiers temporairestable_bloat.sql
btree_bloat.sql
autovacuum
sur
les tablesjoin_collapse_limit
(défaut = 8) : le planificateur
réécrit les constructions des JOIN
explicites en une liste
d’éléments FROM
from_collapse_limit
(défaut = 8) : le planificateur
assemble les sous-requêtes dans des requêtes supérieuresrandom_page_cost
effective_cache_size
max_parallel_workers_per_gather
pg_stat_statements
, PoWA--top
<n> : nombre de requêtes à afficher, par
défaut 20--extension
<format> : format de sortie (html,
text, bin, json ou tsung)--dbname
<database> : choix de la base à
analyser--dbuser
<user> : permet de spécifier un
utilisateur à analyser--exclude_user
<user> : permet d’exclure un
utilisateur de l’analyse--prefix
<log_line_prefix> : permet d’indiquer le
format utilisé dans les logs--begin
<date> -- end
<date> :
permet d’indiquer la plage horaire du rapportj ou --jobs
<n> : permet de paralléliser
l’analyse des logs--timezone
<+/- XX> : permet d’ajuster les
fuseaux horaires dans les graphespg_stat_statements
pg_stat_statements
Métriques les plus intéressantes :
total_exec_time
(requêtes consommatrices)max_exec_time
(requêtes lentes unitairement)temp_blks_written
(fichiers temporaires)shared_blks_*
(utilisation du cache)blk_*_time
(temps consacré aux I/O)