Optimiser une instance PostgreSQL
Luc LAMARLE, Mathieu RIBES, Frédéric YHUEL
shared_bufferswork_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]_workerslog_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_ratelog_temp_files = \<taille minimale\>
0 trace tous les fichiers temporairestable_bloat.sqlbtree_bloat.sqlautovacuum sur
les tablesjoin_collapse_limit (défaut = 8) : le planificateur
réécrit les constructions des JOIN explicites en une liste
d’éléments FROMfrom_collapse_limit (défaut = 8) : le planificateur
assemble les sous-requêtes dans des requêtes supérieuresrandom_page_costeffective_cache_sizemax_parallel_workers_per_gatherpg_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_statementspg_stat_statementsMé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)