Ich laufe EXPLAIN (ANALYZE, BUFFERS) SELECT ...
auf meinem Postgres 9.3-Server. Am Ende sehe ich so etwas wie Buffers: shared hit=166416 dirtied=2
in der Ausgabe.
Aus der Dokumentation geht hervor , dass "schmutzig":
Die Anzahl der verschmutzten Blöcke gibt die Anzahl der zuvor unveränderten Blöcke an, die durch diese Abfrage geändert wurden. Die Anzahl der geschriebenen Blöcke gibt die Anzahl der zuvor verschmutzten Blöcke an, die von diesem Backend während der Abfrageverarbeitung aus dem Cache entfernt wurden.
Dies klingt für mich so, als ob der Vorgang des Markierens eines verschmutzten Blocks nur beim Aktualisieren von Daten stattfinden sollte. Meine Abfrage ist jedoch eine SELECT
und liest nur Daten. Ich würde mir vorstellen, dass nur Treffer oder Lesungen gemeldet werden. Ich irre mich offensichtlich. Was genau passiert in dieser Situation?