Des lectures Postgres qui provoquent des écritures : MVCC, élagage des pages et bits d’indice

2024-12-25

Cet article explore le comportement apparemment paradoxal de PostgreSQL où de simples requêtes SELECT peuvent déclencher des écritures de données. En commençant par le mécanisme de contrôle de concurrence multiversion (MVCC), il explique des concepts tels que les versions de lignes, les pages et les tuples. À l’aide d’exemples de code, il analyse comment les mises à jour des bits d’indice et l’élagage des pages font que les opérations de lecture modifient les pages, conduisant finalement à des écritures sur le disque. L’article traite également de la stratégie d’optimisation des mises à jour HOT et utilise des outils d’inspection des pages pour illustrer la manière dont les données sont stockées et mises à jour dans les pages.