Module M4
Dalibo SCOP
24.12
18 décembre 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 13 à 17.
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
HOT = Heap-Only Tuples
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
Divers seuils possibles, jamais globalement.
SET …_timeout TO '5s' ; ALTER ROLE … IN DATABASE … SET ..._timeout TO '…s'
statement_timeout
idle_session_timeout
idle_in_transaction_session_timeout
transaction_timeout
TOAST : The Oversized-Attribute Storage Technique
Que faire si une ligne dépasse d’un bloc ?
PLAIN
MAIN
EXTERNAL
EXTENDED
pg_toast_XXX
SELECT *
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