diff options
author | Robert Haas <rhaas@postgresql.org> | 2012-04-05 11:37:31 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2012-04-05 11:40:24 -0400 |
commit | 644828908fb132ee1f1da5b8b7975c0d73d6158a (patch) | |
tree | cb90eb1d3f1953919b757d16c06ef447463dbdd3 /src/backend/utils/adt/pgstatfuncs.c | |
parent | 05dbd4a7734e09bd1f835f4197d9befa1c00c4f3 (diff) | |
download | postgresql-644828908fb132ee1f1da5b8b7975c0d73d6158a.tar.gz postgresql-644828908fb132ee1f1da5b8b7975c0d73d6158a.zip |
Expose track_iotiming data via the statistics collector.
Ants Aasma's original patch to add timing information for buffer I/O
requests exposed this data at the relation level, which was judged too
costly. I've here exposed it at the database level instead.
Diffstat (limited to 'src/backend/utils/adt/pgstatfuncs.c')
-rw-r--r-- | src/backend/utils/adt/pgstatfuncs.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 68b25274e38..20ee13db6cf 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -82,6 +82,8 @@ extern Datum pg_stat_get_db_deadlocks(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_stat_reset_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_temp_files(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_temp_bytes(PG_FUNCTION_ARGS); +extern Datum pg_stat_get_db_block_time_read(PG_FUNCTION_ARGS); +extern Datum pg_stat_get_db_block_time_write(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_timed_checkpoints(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_requested_checkpoints(PG_FUNCTION_ARGS); @@ -1358,6 +1360,36 @@ pg_stat_get_db_deadlocks(PG_FUNCTION_ARGS) } Datum +pg_stat_get_db_block_time_read(PG_FUNCTION_ARGS) +{ + Oid dbid = PG_GETARG_OID(0); + int64 result; + PgStat_StatDBEntry *dbentry; + + if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) + result = 0; + else + result = (int64) (dbentry->n_block_time_read); + + PG_RETURN_INT64(result); +} + +Datum +pg_stat_get_db_block_time_write(PG_FUNCTION_ARGS) +{ + Oid dbid = PG_GETARG_OID(0); + int64 result; + PgStat_StatDBEntry *dbentry; + + if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) + result = 0; + else + result = (int64) (dbentry->n_block_time_write); + + PG_RETURN_INT64(result); +} + +Datum pg_stat_get_bgwriter_timed_checkpoints(PG_FUNCTION_ARGS) { PG_RETURN_INT64(pgstat_fetch_global()->timed_checkpoints); |