Module J1
Dalibo SCOP
24.09
29 août 2024
Cette formation est sous licence CC-BY-NC-SA. Vous êtes libre de la redistribuer et/ou modifier aux conditions suivantes :
PostgreSQL® Postgres® et le logo Slonik sont des marques déposées par PostgreSQL Community Association of Canada.
Ce document ne couvre que les versions supportées de PostgreSQL au moment de sa rédaction, soit les versions 12 à 16.
postgresql.conf
vm.dirty_ratio
vm.dirty_background_ratio
vm.dirty_bytes
vm.dirty_background_bytes
*_flush_after
La mémoire sert de cache au disque, pas l’inverse !
vm.swappiness = 10
Le noyau peut autoriser trop de réservation mémoire.
kill -9
vm.overcommit_memory = 2 vm.overcommit_ratio = ? # à calculer, souvent 70-80
Pages mémoire de 2 Mo au lieu de 4 ko :
huge_pages = try # ou: on / off
vm.nr_overcommit_hugepages = ? # selon shared_buffers +10% vm.overcommit_ratio = ? # à baisser
vm.zone_reclaim_mode
kernel.sched_migration_cost_ns = 5000000
kernel.sched_autogroup_enabled = 0
sysctl
/etc/sysctl.conf
/etc/sysctl.d/*conf
noatime
nodiratime
dir_index
data=writeback
nobarrier
Pas d’antivirus
shared_buffers = ...
wal_buffers
work_mem
× hash_mem_multiplier
hash_mem_multiplier
maintenance_work_mem
effective_cache_size
random_page_cost
max_parallel_workers_per_gather
max_parallel_workers
max_worker_processes
min_parallel_table_scan_size
min_parallel_index_scan_size
VACUUM
max_parallel_maintenance_workers
fsync
on
min_wal_size
max_wal_size
checkpoint_timeout
checkpoint_completion_target
track_activities
track_counts
track_functions
track_io_timing
track_wal_io_timing
pg_tblspc
CREATE TABLESPACE chaud LOCATION '/SSD/tbl/chaud'; CREATE DATABASE nom TABLESPACE 'chaud'; ALTER DATABASE nom SET default_tablespace TO 'chaud'; GRANT CREATE ON TABLESPACE chaud TO un_utilisateur ; CREATE TABLE une_table (…) TABLESPACE chaud ; ALTER TABLE une_table SET TABLESPACE chaud ; -- verrou ! ALTER INDEX une_table_i_idx SET TABLESPACE chaud ; -- pas automatique
default_tablespace
temp_tablespaces
GRANT CREATE ON TABLESPACE ssd_tri TO dupont ;
seq_page_cost
effective_io_concurrency
maintenance_io_concurrency
ALTER TABLESPACE chaud SET ( random_page_cost = 1 ); ALTER TABLESPACE chaud SET ( effective_io_concurrency = 500, maintenance_io_concurrency = 500 ) ;
--wal-dir
initdb
stats_temp_directory
pg_stat_statements
SELECT only
UPDATE only
TPC-B
Perl
PostgreSQL propose de nombreuses voies d’optimisation.
Cela passe en priorité par un bon choix des composants matériels et par une configuration pointilleuse.
Mais ceci ne peut se faire qu’en connaissance de l’ensemble du système, et notamment des applications utilisant les bases de l’instance.
N’hésitez pas, c’est le moment !
https://dali.bo/j1_quiz
Ce TP étant complexe, allez directement suivre la partie Solution.