1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Make EXPLAIN (BUFFERS) track blocks dirtied, as well as those written.

Also expose the new counters through pg_stat_statements.

Patch by me.  Review by Fujii Masao and Greg Smith.
This commit is contained in:
Robert Haas
2012-02-22 20:33:05 -05:00
parent f74f9a277c
commit 2254367435
12 changed files with 148 additions and 10 deletions

View File

@ -99,6 +99,13 @@
<entry>Total number of shared blocks reads by the statement</entry>
</row>
<row>
<entry><structfield>shared_blks_dirtied</structfield></entry>
<entry><type>bigint</type></entry>
<entry></entry>
<entry>Total number of shared blocks dirtied by the statement</entry>
</row>
<row>
<entry><structfield>shared_blks_written</structfield></entry>
<entry><type>bigint</type></entry>
@ -120,6 +127,13 @@
<entry>Total number of local blocks reads by the statement</entry>
</row>
<row>
<entry><structfield>local_blks_dirtied</structfield></entry>
<entry><type>bigint</type></entry>
<entry></entry>
<entry>Total number of local blocks dirtied by the statement</entry>
</row>
<row>
<entry><structfield>local_blks_written</structfield></entry>
<entry><type>bigint</type></entry>

View File

@ -155,14 +155,20 @@ ROLLBACK;
<listitem>
<para>
Include information on buffer usage. Specifically, include the number of
shared blocks hits, reads, and writes, the number of local blocks hits,
reads, and writes, and the number of temp blocks reads and writes.
A <quote>hit</> means that a read was avoided because the block was
shared blocks hit, read, dirtied, and written, the number of local blocks
hit, read, dirtied, and written, and the number of temp blocks read and
written.
A <emphasis>hit</> means that a read was avoided because the block was
found already in cache when needed.
Shared blocks contain data from regular tables and indexes;
local blocks contain data from temporary tables and indexes;
while temp blocks contain short-term working data used in sorts, hashes,
Materialize plan nodes, and similar cases.
The number of blocks <emphasis>dirtied</> indicates the number of
previously unmodified blocks that were changed by this query; while the
number of blocks <emphasis>written</> indicates the number of
previously-dirtied blocks evicted from cache by this backend during
query processing.
The number of blocks shown for an
upper-level node includes those used by all its child nodes. In text
format, only non-zero values are printed. This parameter may only be