diff options
author | Robert Haas <rhaas@postgresql.org> | 2012-02-22 20:33:05 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2012-02-22 20:33:05 -0500 |
commit | 2254367435fcc4a31cc3b6d8324e33c5c30f265a (patch) | |
tree | 484dc972b60dd19f03cf15c30869a1566c576848 /src/backend/commands/explain.c | |
parent | f74f9a277c37b42c570ce01019f815abbec58ba0 (diff) | |
download | postgresql-2254367435fcc4a31cc3b6d8324e33c5c30f265a.tar.gz postgresql-2254367435fcc4a31cc3b6d8324e33c5c30f265a.zip |
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.
Diffstat (limited to 'src/backend/commands/explain.c')
-rw-r--r-- | src/backend/commands/explain.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index a1692f82ae8..93b1f34ca0c 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -1183,12 +1183,14 @@ ExplainNode(PlanState *planstate, List *ancestors, { bool has_shared = (usage->shared_blks_hit > 0 || usage->shared_blks_read > 0 || - usage->shared_blks_written); + usage->shared_blks_dirtied > 0 || + usage->shared_blks_written > 0); bool has_local = (usage->local_blks_hit > 0 || usage->local_blks_read > 0 || - usage->local_blks_written); + usage->local_blks_dirtied > 0 || + usage->local_blks_written > 0); bool has_temp = (usage->temp_blks_read > 0 || - usage->temp_blks_written); + usage->temp_blks_written > 0); /* Show only positive counter values. */ if (has_shared || has_local || has_temp) @@ -1205,6 +1207,9 @@ ExplainNode(PlanState *planstate, List *ancestors, if (usage->shared_blks_read > 0) appendStringInfo(es->str, " read=%ld", usage->shared_blks_read); + if (usage->shared_blks_dirtied > 0) + appendStringInfo(es->str, " dirtied=%ld", + usage->shared_blks_dirtied); if (usage->shared_blks_written > 0) appendStringInfo(es->str, " written=%ld", usage->shared_blks_written); @@ -1220,6 +1225,9 @@ ExplainNode(PlanState *planstate, List *ancestors, if (usage->local_blks_read > 0) appendStringInfo(es->str, " read=%ld", usage->local_blks_read); + if (usage->local_blks_dirtied > 0) + appendStringInfo(es->str, " dirtied=%ld", + usage->local_blks_dirtied); if (usage->local_blks_written > 0) appendStringInfo(es->str, " written=%ld", usage->local_blks_written); @@ -1243,9 +1251,11 @@ ExplainNode(PlanState *planstate, List *ancestors, { ExplainPropertyLong("Shared Hit Blocks", usage->shared_blks_hit, es); ExplainPropertyLong("Shared Read Blocks", usage->shared_blks_read, es); + ExplainPropertyLong("Shared Dirtied Blocks", usage->shared_blks_dirtied, es); ExplainPropertyLong("Shared Written Blocks", usage->shared_blks_written, es); ExplainPropertyLong("Local Hit Blocks", usage->local_blks_hit, es); ExplainPropertyLong("Local Read Blocks", usage->local_blks_read, es); + ExplainPropertyLong("Local Dirtied Blocks", usage->local_blks_dirtied, es); ExplainPropertyLong("Local Written Blocks", usage->local_blks_written, es); ExplainPropertyLong("Temp Read Blocks", usage->temp_blks_read, es); ExplainPropertyLong("Temp Written Blocks", usage->temp_blks_written, es); |