-- planning time is needed during tests SET pg_stat_statements.track_planning = TRUE;
SELECT1AS"STMTTS1"; SELECT now() AS ref_ts \gset SELECT1,2AS"STMTTS2"; SELECT stats_since >= :'ref_ts', count(*) FROM pg_stat_statements WHERE query LIKE'%STMTTS%' GROUPBY stats_since >= :'ref_ts' ORDERBY stats_since >= :'ref_ts';
SELECT now() AS ref_ts \gset SELECT
count(*) as total,
count(*) FILTER ( WHERE min_plan_time + max_plan_time = 0
) as minmax_plan_zero,
count(*) FILTER ( WHERE min_exec_time + max_exec_time = 0
) as minmax_exec_zero,
count(*) FILTER ( WHERE minmax_stats_since >= :'ref_ts'
) as minmax_stats_since_after_ref,
count(*) FILTER ( WHERE stats_since >= :'ref_ts'
) as stats_since_after_ref FROM pg_stat_statements WHERE query LIKE'%STMTTS%';
-- Perform single min/max reset SELECT pg_stat_statements_reset(0, 0, queryid, true) AS minmax_reset_ts FROM pg_stat_statements WHERE query LIKE'%STMTTS1%' \gset
-- check SELECT
count(*) as total,
count(*) FILTER ( WHERE min_plan_time + max_plan_time = 0
) as minmax_plan_zero,
count(*) FILTER ( WHERE min_exec_time + max_exec_time = 0
) as minmax_exec_zero,
count(*) FILTER ( WHERE minmax_stats_since >= :'ref_ts'
) as minmax_stats_since_after_ref,
count(*) FILTER ( WHERE stats_since >= :'ref_ts'
) as stats_since_after_ref FROM pg_stat_statements WHERE query LIKE'%STMTTS%';
-- check minmax reset timestamps SELECT
query, minmax_stats_since = :'minmax_reset_ts'AS reset_ts_match FROM pg_stat_statements WHERE query LIKE'%STMTTS%' ORDERBY query COLLATE"C";
-- check that minmax reset does not set stats_reset SELECT
stats_reset = :'minmax_reset_ts'AS stats_reset_ts_match FROM pg_stat_statements_info;
-- Perform common min/max reset SELECT pg_stat_statements_reset(0, 0, 0, true) AS minmax_reset_ts \gset
-- check again SELECT
count(*) as total,
count(*) FILTER ( WHERE min_plan_time + max_plan_time = 0
) as minmax_plan_zero,
count(*) FILTER ( WHERE min_exec_time + max_exec_time = 0
) as minmax_exec_zero,
count(*) FILTER ( WHERE minmax_stats_since >= :'ref_ts'
) as minmax_ts_after_ref,
count(*) FILTER ( WHERE minmax_stats_since = :'minmax_reset_ts'
) as minmax_ts_match,
count(*) FILTER ( WHERE stats_since >= :'ref_ts'
) as stats_since_after_ref FROM pg_stat_statements WHERE query LIKE'%STMTTS%';
-- Execute first query once more to check stats update SELECT1AS"STMTTS1";
-- check -- we don't check planing times here to be independent of -- plan caching approach SELECT
count(*) as total,
count(*) FILTER ( WHERE min_exec_time + max_exec_time = 0
) as minmax_exec_zero,
count(*) FILTER ( WHERE minmax_stats_since >= :'ref_ts'
) as minmax_ts_after_ref,
count(*) FILTER ( WHERE stats_since >= :'ref_ts'
) as stats_since_after_ref FROM pg_stat_statements WHERE query LIKE'%STMTTS%';
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.