mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-27 07:21:09 +08:00
dc9f8a7983
This patch adds 'stats_since' and 'minmax_stats_since' columns to the pg_stat_statements view and pg_stat_statements() function. The new min/max reset mode for the pg_stat_stetments_reset() function is controlled by the parameter minmax_only. 'stat_since' column is populated with the current timestamp when a new statement is added to the pg_stat_statements hashtable. It provides clean information about statistics collection time intervals for each statement. Besides it can be used by sampling solutions to detect situations when a statement was evicted and stored again between samples. Such a sampling solution could derive any pg_stat_statements statistic values for an interval between two samples with the exception of all min/max statistics. To address this issue this patch adds the ability to reset min/max statistics independently of the statement reset using the new minmax_only parameter of the pg_stat_statements_reset(userid oid, dbid oid, queryid bigint, minmax_only boolean) function. The timestamp of such reset is stored in the minmax_stats_since field for each statement. pg_stat_statements_reset() function now returns the timestamp of a reset as the result. Discussion: https://postgr.es/m/flat/72e80e7b160a6eb189df9ef6f068cce3765d37f8.camel%40moonset.ru Author: Andrei Zubkov Reviewed-by: Julien Rouhaud, Hayato Kuroda, Yuki Seino, Chengxi Sun Reviewed-by: Anton Melnikov, Darren Rush, Michael Paquier, Sergei Kornilov Reviewed-by: Alena Rybakina, Andrei Lepikhov
83 lines
2.6 KiB
SQL
83 lines
2.6 KiB
SQL
/* contrib/pg_stat_statements/pg_stat_statements--1.10--1.11.sql */
|
|
|
|
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
|
|
\echo Use "ALTER EXTENSION pg_stat_statements UPDATE TO '1.11'" to load this file. \quit
|
|
|
|
/* Drop old versions */
|
|
DROP VIEW pg_stat_statements;
|
|
DROP FUNCTION pg_stat_statements(boolean);
|
|
DROP FUNCTION pg_stat_statements_reset(Oid, Oid, bigint);
|
|
|
|
/* Now redefine */
|
|
CREATE FUNCTION pg_stat_statements(IN showtext boolean,
|
|
OUT userid oid,
|
|
OUT dbid oid,
|
|
OUT toplevel bool,
|
|
OUT queryid bigint,
|
|
OUT query text,
|
|
OUT plans int8,
|
|
OUT total_plan_time float8,
|
|
OUT min_plan_time float8,
|
|
OUT max_plan_time float8,
|
|
OUT mean_plan_time float8,
|
|
OUT stddev_plan_time float8,
|
|
OUT calls int8,
|
|
OUT total_exec_time float8,
|
|
OUT min_exec_time float8,
|
|
OUT max_exec_time float8,
|
|
OUT mean_exec_time float8,
|
|
OUT stddev_exec_time float8,
|
|
OUT rows int8,
|
|
OUT shared_blks_hit int8,
|
|
OUT shared_blks_read int8,
|
|
OUT shared_blks_dirtied int8,
|
|
OUT shared_blks_written int8,
|
|
OUT local_blks_hit int8,
|
|
OUT local_blks_read int8,
|
|
OUT local_blks_dirtied int8,
|
|
OUT local_blks_written int8,
|
|
OUT temp_blks_read int8,
|
|
OUT temp_blks_written int8,
|
|
OUT shared_blk_read_time float8,
|
|
OUT shared_blk_write_time float8,
|
|
OUT local_blk_read_time float8,
|
|
OUT local_blk_write_time float8,
|
|
OUT temp_blk_read_time float8,
|
|
OUT temp_blk_write_time float8,
|
|
OUT wal_records int8,
|
|
OUT wal_fpi int8,
|
|
OUT wal_bytes numeric,
|
|
OUT jit_functions int8,
|
|
OUT jit_generation_time float8,
|
|
OUT jit_inlining_count int8,
|
|
OUT jit_inlining_time float8,
|
|
OUT jit_optimization_count int8,
|
|
OUT jit_optimization_time float8,
|
|
OUT jit_emission_count int8,
|
|
OUT jit_emission_time float8,
|
|
OUT jit_deform_count int8,
|
|
OUT jit_deform_time float8,
|
|
OUT stats_since timestamp with time zone,
|
|
OUT minmax_stats_since timestamp with time zone
|
|
)
|
|
RETURNS SETOF record
|
|
AS 'MODULE_PATHNAME', 'pg_stat_statements_1_11'
|
|
LANGUAGE C STRICT VOLATILE PARALLEL SAFE;
|
|
|
|
CREATE VIEW pg_stat_statements AS
|
|
SELECT * FROM pg_stat_statements(true);
|
|
|
|
GRANT SELECT ON pg_stat_statements TO PUBLIC;
|
|
|
|
CREATE FUNCTION pg_stat_statements_reset(IN userid Oid DEFAULT 0,
|
|
IN dbid Oid DEFAULT 0,
|
|
IN queryid bigint DEFAULT 0,
|
|
IN minmax_only boolean DEFAULT false
|
|
)
|
|
RETURNS timestamp with time zone
|
|
AS 'MODULE_PATHNAME', 'pg_stat_statements_reset_1_11'
|
|
LANGUAGE C STRICT PARALLEL SAFE;
|
|
|
|
-- Don't want this to be available to non-superusers.
|
|
REVOKE ALL ON FUNCTION pg_stat_statements_reset(Oid, Oid, bigint, boolean) FROM PUBLIC;
|