Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
083e1b0f
Commit
083e1b0f
authored
Jan 28, 2010
by
Magnus Hagander
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add functions to reset the statistics counter for a single table/index or
a single function.
parent
21d3ae09
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
131 additions
and
7 deletions
+131
-7
doc/src/sgml/monitoring.sgml
doc/src/sgml/monitoring.sgml
+19
-1
src/backend/postmaster/pgstat.c
src/backend/postmaster/pgstat.c
+58
-1
src/backend/utils/adt/pgstatfuncs.c
src/backend/utils/adt/pgstatfuncs.c
+24
-1
src/include/catalog/catversion.h
src/include/catalog/catversion.h
+2
-2
src/include/catalog/pg_proc.h
src/include/catalog/pg_proc.h
+5
-1
src/include/pgstat.h
src/include/pgstat.h
+23
-1
No files found.
doc/src/sgml/monitoring.sgml
View file @
083e1b0f
<!-- $PostgreSQL: pgsql/doc/src/sgml/monitoring.sgml,v 1.7
4 2010/01/19 14:11:30
mha Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/monitoring.sgml,v 1.7
5 2010/01/28 14:25:41
mha Exp $ -->
<chapter id="monitoring">
<title>Monitoring Database Activity</title>
...
...
@@ -929,6 +929,24 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
<structname>pg_stat_bgwriter</>.
</entry>
</row>
<row>
<entry><literal><function>pg_stat_reset_single_table_counters</function>(oid)</literal></entry>
<entry><type>void</type></entry>
<entry>
Reset statistics for a single table or index in the current database to
zero (requires superuser privileges)
</entry>
</row>
<row>
<entry><literal><function>pg_stat_reset_single_function_counters</function>(oid)</literal></entry>
<entry><type>void</type></entry>
<entry>
Reset statistics for a single function in the current database to
zero (requires superuser privileges)
</entry>
</row>
</tbody>
</tgroup>
</table>
...
...
src/backend/postmaster/pgstat.c
View file @
083e1b0f
...
...
@@ -13,7 +13,7 @@
*
* Copyright (c) 2001-2010, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.19
8 2010/01/19 14:11:30
mha Exp $
* $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.19
9 2010/01/28 14:25:41
mha Exp $
* ----------
*/
#include "postgres.h"
...
...
@@ -271,6 +271,7 @@ static void pgstat_recv_tabpurge(PgStat_MsgTabpurge *msg, int len);
static
void
pgstat_recv_dropdb
(
PgStat_MsgDropdb
*
msg
,
int
len
);
static
void
pgstat_recv_resetcounter
(
PgStat_MsgResetcounter
*
msg
,
int
len
);
static
void
pgstat_recv_resetsharedcounter
(
PgStat_MsgResetsharedcounter
*
msg
,
int
len
);
static
void
pgstat_recv_resetsinglecounter
(
PgStat_MsgResetsinglecounter
*
msg
,
int
len
);
static
void
pgstat_recv_autovac
(
PgStat_MsgAutovacStart
*
msg
,
int
len
);
static
void
pgstat_recv_vacuum
(
PgStat_MsgVacuum
*
msg
,
int
len
);
static
void
pgstat_recv_analyze
(
PgStat_MsgAnalyze
*
msg
,
int
len
);
...
...
@@ -1187,6 +1188,32 @@ pgstat_reset_shared_counters(const char *target)
pgstat_send
(
&
msg
,
sizeof
(
msg
));
}
/* ----------
* pgstat_reset_single_counter() -
*
* Tell the statistics collector to reset a single counter.
* ----------
*/
void
pgstat_reset_single_counter
(
Oid
objoid
,
PgStat_Single_Reset_Type
type
)
{
PgStat_MsgResetsinglecounter
msg
;
if
(
pgStatSock
<
0
)
return
;
if
(
!
superuser
())
ereport
(
ERROR
,
(
errcode
(
ERRCODE_INSUFFICIENT_PRIVILEGE
),
errmsg
(
"must be superuser to reset statistics counters"
)));
pgstat_setheader
(
&
msg
.
m_hdr
,
PGSTAT_MTYPE_RESETSINGLECOUNTER
);
msg
.
m_databaseid
=
MyDatabaseId
;
msg
.
m_resettype
=
type
;
msg
.
m_objectid
=
objoid
;
pgstat_send
(
&
msg
,
sizeof
(
msg
));
}
/* ----------
* pgstat_report_autovac() -
*
...
...
@@ -2954,6 +2981,12 @@ PgstatCollectorMain(int argc, char *argv[])
len
);
break
;
case
PGSTAT_MTYPE_RESETSINGLECOUNTER
:
pgstat_recv_resetsinglecounter
(
(
PgStat_MsgResetsinglecounter
*
)
&
msg
,
len
);
break
;
case
PGSTAT_MTYPE_AUTOVAC_START
:
pgstat_recv_autovac
((
PgStat_MsgAutovacStart
*
)
&
msg
,
len
);
break
;
...
...
@@ -3928,6 +3961,30 @@ pgstat_recv_resetsharedcounter(PgStat_MsgResetsharedcounter *msg, int len)
*/
}
/* ----------
* pgstat_recv_resetsinglecounter() -
*
* Reset a statistics for a single object
* ----------
*/
static
void
pgstat_recv_resetsinglecounter
(
PgStat_MsgResetsinglecounter
*
msg
,
int
len
)
{
PgStat_StatDBEntry
*
dbentry
;
dbentry
=
pgstat_get_db_entry
(
msg
->
m_databaseid
,
false
);
if
(
!
dbentry
)
return
;
/* Remove object if it exists, ignore it if not */
if
(
msg
->
m_resettype
==
RESET_TABLE
)
(
void
)
hash_search
(
dbentry
->
tables
,
(
void
*
)
&
(
msg
->
m_objectid
),
HASH_REMOVE
,
NULL
);
else
if
(
msg
->
m_resettype
==
RESET_FUNCTION
)
(
void
)
hash_search
(
dbentry
->
functions
,
(
void
*
)
&
(
msg
->
m_objectid
),
HASH_REMOVE
,
NULL
);
}
/* ----------
* pgstat_recv_autovac() -
*
...
...
src/backend/utils/adt/pgstatfuncs.c
View file @
083e1b0f
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/pgstatfuncs.c,v 1.5
8 2010/01/19 14:11:3
1 mha Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/pgstatfuncs.c,v 1.5
9 2010/01/28 14:25:4
1 mha Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -79,6 +79,8 @@ extern Datum pg_stat_get_buf_alloc(PG_FUNCTION_ARGS);
extern
Datum
pg_stat_clear_snapshot
(
PG_FUNCTION_ARGS
);
extern
Datum
pg_stat_reset
(
PG_FUNCTION_ARGS
);
extern
Datum
pg_stat_reset_shared
(
PG_FUNCTION_ARGS
);
extern
Datum
pg_stat_reset_single_table_counters
(
PG_FUNCTION_ARGS
);
extern
Datum
pg_stat_reset_single_function_counters
(
PG_FUNCTION_ARGS
);
/* Global bgwriter statistics, from bgwriter.c */
extern
PgStat_MsgBgWriter
bgwriterStats
;
...
...
@@ -1120,3 +1122,24 @@ pg_stat_reset_shared(PG_FUNCTION_ARGS)
PG_RETURN_VOID
();
}
/* Reset a a single counter in the current database */
Datum
pg_stat_reset_single_table_counters
(
PG_FUNCTION_ARGS
)
{
Oid
taboid
=
PG_GETARG_OID
(
0
);
pgstat_reset_single_counter
(
taboid
,
RESET_TABLE
);
PG_RETURN_VOID
();
}
Datum
pg_stat_reset_single_function_counters
(
PG_FUNCTION_ARGS
)
{
Oid
funcoid
=
PG_GETARG_OID
(
0
);
pgstat_reset_single_counter
(
funcoid
,
RESET_FUNCTION
);
PG_RETURN_VOID
();
}
src/include/catalog/catversion.h
View file @
083e1b0f
...
...
@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.5
79 2010/01/25 20:55:32 tgl
Exp $
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.5
80 2010/01/28 14:25:41 mha
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 2010012
5
1
#define CATALOG_VERSION_NO 2010012
8
1
#endif
src/include/catalog/pg_proc.h
View file @
083e1b0f
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.56
5 2010/01/25 20:55:32 tgl
Exp $
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.56
6 2010/01/28 14:25:41 mha
Exp $
*
* NOTES
* The script catalog/genbki.pl reads this file and generates .bki
...
...
@@ -3087,6 +3087,10 @@ DATA(insert OID = 2274 ( pg_stat_reset PGNSP PGUID 12 1 0 0 f f f f f v 0 0
DESCR
(
"statistics: reset collected statistics for current database"
);
DATA
(
insert
OID
=
3775
(
pg_stat_reset_shared
PGNSP
PGUID
12
1
0
0
f
f
f
f
f
v
1
0
2278
"25"
_null_
_null_
_null_
_null_
pg_stat_reset_shared
_null_
_null_
_null_
));
DESCR
(
"statistics: reset collected statistics shared across the cluster"
);
DATA
(
insert
OID
=
3776
(
pg_stat_reset_single_table_counters
PGNSP
PGUID
12
1
0
0
f
f
f
f
f
v
1
0
2278
"26"
_null_
_null_
_null_
_null_
pg_stat_reset_single_table_counters
_null_
_null_
_null_
));
DESCR
(
"statistics: reset collected statistics for a single table or index in the current database"
);
DATA
(
insert
OID
=
3777
(
pg_stat_reset_single_function_counters
PGNSP
PGUID
12
1
0
0
f
f
f
f
f
v
1
0
2278
"26"
_null_
_null_
_null_
_null_
pg_stat_reset_single_function_counters
_null_
_null_
_null_
));
DESCR
(
"statistics: reset collected statistics for a single function in the current database"
);
DATA
(
insert
OID
=
1946
(
encode
PGNSP
PGUID
12
1
0
0
f
f
f
t
f
i
2
0
25
"17 25"
_null_
_null_
_null_
_null_
binary_encode
_null_
_null_
_null_
));
DESCR
(
"convert bytea value into some ascii-only text string"
);
...
...
src/include/pgstat.h
View file @
083e1b0f
...
...
@@ -5,7 +5,7 @@
*
* Copyright (c) 2001-2010, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/include/pgstat.h,v 1.8
7 2010/01/19 14:11:3
1 mha Exp $
* $PostgreSQL: pgsql/src/include/pgstat.h,v 1.8
8 2010/01/28 14:25:4
1 mha Exp $
* ----------
*/
#ifndef PGSTAT_H
...
...
@@ -39,6 +39,7 @@ typedef enum StatMsgType
PGSTAT_MTYPE_DROPDB
,
PGSTAT_MTYPE_RESETCOUNTER
,
PGSTAT_MTYPE_RESETSHAREDCOUNTER
,
PGSTAT_MTYPE_RESETSINGLECOUNTER
,
PGSTAT_MTYPE_AUTOVAC_START
,
PGSTAT_MTYPE_VACUUM
,
PGSTAT_MTYPE_ANALYZE
,
...
...
@@ -100,6 +101,12 @@ typedef enum PgStat_Shared_Reset_Target
RESET_BGWRITER
}
PgStat_Shared_Reset_Target
;
/* Possible object types for resetting single counters */
typedef
enum
PgStat_Single_Reset_Type
{
RESET_TABLE
,
RESET_FUNCTION
}
PgStat_Single_Reset_Type
;
/* ------------------------------------------------------------
* Structures kept in backend local memory while accumulating counts
...
...
@@ -278,6 +285,19 @@ typedef struct PgStat_MsgResetsharedcounter
PgStat_Shared_Reset_Target
m_resettarget
;
}
PgStat_MsgResetsharedcounter
;
/* ----------
* PgStat_MsgResetsinglecounter Sent by the backend to tell the collector
* to reset a single counter
* ----------
*/
typedef
struct
PgStat_MsgResetsinglecounter
{
PgStat_MsgHdr
m_hdr
;
Oid
m_databaseid
;
PgStat_Single_Reset_Type
m_resettype
;
Oid
m_objectid
;
}
PgStat_MsgResetsinglecounter
;
/* ----------
* PgStat_MsgAutovacStart Sent by the autovacuum daemon to signal
* that a database is going to be processed
...
...
@@ -432,6 +452,7 @@ typedef union PgStat_Msg
PgStat_MsgDropdb
msg_dropdb
;
PgStat_MsgResetcounter
msg_resetcounter
;
PgStat_MsgResetsharedcounter
msg_resetsharedcounter
;
PgStat_MsgResetsinglecounter
msg_resetsinglecounter
;
PgStat_MsgAutovacStart
msg_autovacuum
;
PgStat_MsgVacuum
msg_vacuum
;
PgStat_MsgAnalyze
msg_analyze
;
...
...
@@ -654,6 +675,7 @@ extern void pgstat_drop_database(Oid databaseid);
extern
void
pgstat_clear_snapshot
(
void
);
extern
void
pgstat_reset_counters
(
void
);
extern
void
pgstat_reset_shared_counters
(
const
char
*
);
extern
void
pgstat_reset_single_counter
(
Oid
objectid
,
PgStat_Single_Reset_Type
type
);
extern
void
pgstat_report_autovac
(
Oid
dboid
);
extern
void
pgstat_report_vacuum
(
Oid
tableoid
,
bool
shared
,
bool
adopt_counts
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment