summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2008-11-03 01:17:08 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2008-11-03 01:17:08 +0000
commit3c2313f4815e1971e2f14e50fffc9328877c52d5 (patch)
tree337449631f837f11bd006530d170bd6d1d5a2c4a /src/include
parentd7112cfa884e5125a20a24590f193ceebedf0146 (diff)
Change the pgstat logic so that the stats collector writes the stats file only
upon requests from backends, rather than on a fixed 500msec cycle. (There's still throttling logic to ensure it writes no more often than once per 500msec, though.) This should result in a significant reduction in stats file write traffic in typical scenarios where the stats are demanded only infrequently. This approach also means that the former difficulty with changing stats_temp_directory on-the-fly has gone away, so remove the caution about that as well as the thrashing we did to minimize the trouble window. In passing, also fix pgstat_report_stat() so that we will send a stats message if we have function call stats but not table stats to report; this fixes a bug in the recent patch to support function-call stats. Martin Pihlak
Diffstat (limited to 'src/include')
-rw-r--r--src/include/pgstat.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 8c2d39e4c55..119d7b6966d 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -5,7 +5,7 @@
*
* Copyright (c) 2001-2008, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/include/pgstat.h,v 1.78 2008/08/15 08:37:40 mha Exp $
+ * $PostgreSQL: pgsql/src/include/pgstat.h,v 1.79 2008/11/03 01:17:08 tgl Exp $
* ----------
*/
#ifndef PGSTAT_H
@@ -33,6 +33,7 @@ typedef enum TrackFunctionsLevel
typedef enum StatMsgType
{
PGSTAT_MTYPE_DUMMY,
+ PGSTAT_MTYPE_INQUIRY,
PGSTAT_MTYPE_TABSTAT,
PGSTAT_MTYPE_TABPURGE,
PGSTAT_MTYPE_DROPDB,
@@ -174,6 +175,19 @@ typedef struct PgStat_MsgDummy
/* ----------
+ * PgStat_MsgInquiry Sent by a backend to ask the collector
+ * to write the stats file.
+ * ----------
+ */
+
+typedef struct PgStat_MsgInquiry
+{
+ PgStat_MsgHdr m_hdr;
+ TimestampTz inquiry_time; /* minimum acceptable file timestamp */
+} PgStat_MsgInquiry;
+
+
+/* ----------
* PgStat_TableEntry Per-table info in a MsgTabstat
* ----------
*/
@@ -392,6 +406,7 @@ typedef union PgStat_Msg
{
PgStat_MsgHdr msg_hdr;
PgStat_MsgDummy msg_dummy;
+ PgStat_MsgInquiry msg_inquiry;
PgStat_MsgTabstat msg_tabstat;
PgStat_MsgTabpurge msg_tabpurge;
PgStat_MsgDropdb msg_dropdb;
@@ -413,7 +428,7 @@ typedef union PgStat_Msg
* ------------------------------------------------------------
*/
-#define PGSTAT_FILE_FORMAT_ID 0x01A5BC97
+#define PGSTAT_FILE_FORMAT_ID 0x01A5BC98
/* ----------
* PgStat_StatDBEntry The collector's data per database
@@ -494,6 +509,7 @@ typedef struct PgStat_StatFuncEntry
*/
typedef struct PgStat_GlobalStats
{
+ TimestampTz stats_timestamp; /* time of stats file update */
PgStat_Counter timed_checkpoints;
PgStat_Counter requested_checkpoints;
PgStat_Counter buf_written_checkpoints;