Postgres-Lesevorgänge verursachen Schreibvorgänge: MVCC, Seitenbereinigung und Hinweisbits
Dieser Artikel befasst sich mit dem scheinbar paradoxen Verhalten in PostgreSQL, bei dem einfache SELECT-Abfragen Daten schreiben können. Ausgehend vom Mechanismus der Multiversion Concurrency Control (MVCC) werden Konzepte wie Zeilenversionen, Seiten und Tupel erläutert. Anhand von Codebeispielen wird analysiert, wie die Aktualisierung von Hinweisbits und die Seitenbereinigung dazu führen, dass Lesevorgänge Seiten ändern, was letztendlich zu Schreibvorgängen auf die Festplatte führt. Der Artikel behandelt auch die HOT-Update-Optimierungsstrategie und verwendet Seiteninspektionstools, um zu veranschaulichen, wie Daten in Seiten gespeichert und aktualisiert werden.
Mehr lesen