Module M4
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 utilise un modèle appelé MVCC (Multi-Version Concurrency Control).
ROLLBACK
BEGIN ISOLATION LEVEL xxx
READ COMMITTED
ctid
Table initiale :
BEGIN; UPDATE soldes SET solde = solde - 200 WHERE nom = 'M. Durand';
UPDATE soldes SET solde = solde + 200 WHERE nom = 'Mme Martin';
COMMIT
VACUUM
xmin
xmax
Après 4 milliards de transactions :
Concrètement ?
VACUUM FREEZE
MVCC a été affiné au fil des versions :
La gestion des verrous est liée à l’implémentation de MVCC
PostgreSQL possède un gestionnaire de verrous
pg_locks
max_locks_per_transaction
lock_timeout
deadlock_timeout
log_lock_waits
TOAST : The Oversized-Attribute Storage Technique
Que faire si une ligne dépasse d’un bloc ?
pg_toast_XXX
PLAIN
MAIN
EXTERNAL
EXTENDED
pglz
zlib
lz4
default_toast_compression = lz4
ou :
ALTER TABLE t1 ALTER COLUMN c2 SET COMPRESSION lz4 ;
N’hésitez pas, c’est le moment !
https://dali.bo/m4_quiz