Ich weiß, dass ich mit EXPLAIN ANALYSE die vorhergesagten Kosten und tatsächlichen Ausführungszeiten (die in verschiedenen Einheiten sind, argh!) ermitteln kann, aber gibt es eine Möglichkeit, Postgres zu sagen, wie viel I / O (logisch oder physisch) ) dass es tun muss, um eine Anfrage zu erfüllen?
(Ich suche nach dem Äquivalent von "set statistics io on" für Sybase oder MS SQL Server.)
Ab PostgreSQL 9.0 können Sie Folgendes ausführen:
%Vor%Und es wird Ihnen zeigen, wie die Anweisung mit dem PostgreSQL-Cache interagiert hat. In Fällen, in denen dies einen Cache-Fehler meldet, handelt es sich um einen OS-Aufruf, um etwas zu lesen. Sie können nicht sicher sein, dass es sich um eine physische E / A handelt, da sie sich möglicherweise im Betriebssystem-Cache befindet. Aber das ist wahrscheinlich eher das, wonach Sie suchen, als sich die pg_stat_ * -Informationen anzusehen.
Es ist leider nicht so einfach wie ein SET STATISTICS IO ON
für PostgreSQL
. Es gibt jedoch IO-Statistiken, die über die Systemkataloge pg_statio_*
verfügbar sind. Es ist nicht perfekt, da die Daten nicht auf eine Sitzung beschränkt sind. Wenn Sie jedoch überprüfen möchten, wie effizient Abfragen in einer Umgebung mit sauberem Raum sind, funktioniert sie für die meisten Probleme gut genug.
Nicht wirklich, da sich PostgreSQL auch stark auf den Betriebssystem-Cache verlässt und nicht wissen kann, was dort vor sich geht. Die pg_statio * -Familie von Ansichten in pg_catalog führt fortlaufend Zählungen von Treffern und tatsächlichen Lesevorgängen durch, aber diese Lesevorgänge haben möglicherweise den Betriebssystem-Cache getroffen.
Tags und Links postgresql