-- These tests require track_utility to be enabled. SET pg_stat_statements.track_utility = TRUE; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- Tables, indexes, triggers CREATE TEMP TABLE tab_stats (a int, b char(20)); CREATEINDEX index_stats ON tab_stats(b, (b || 'data1'), (b || 'data2')) WHERE a > 0; ALTERTABLE tab_stats ALTERCOLUMN b setdefault'a'; ALTERTABLE tab_stats ALTERCOLUMN b TYPE text USING'data' || b; ALTERTABLE tab_stats ADDCONSTRAINT a_nonzero CHECK (a <> 0); DROPTABLE tab_stats \; DROPTABLEIFEXISTS tab_stats \; -- This DROP query uses two different strings, still they count as one entry. DROPTABLEIFEXISTS tab_stats \; DropTableIfExists tab_stats \; SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C"; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- Partitions CREATETABLE pt_stats (a int, b int) PARTITION BY range (a); CREATETABLE pt_stats1 (a int, b int); ALTERTABLE pt_stats ATTACH PARTITION pt_stats1 FORVALUESFROM (0) TO (100); CREATETABLE pt_stats2 PARTITION OF pt_stats FORVALUESFROM (100) TO (200); CREATEINDEX pt_stats_index ON ONLY pt_stats (a); CREATEINDEX pt_stats2_index ON ONLY pt_stats2 (a); ALTERINDEX pt_stats_index ATTACH PARTITION pt_stats2_index; DROPTABLE pt_stats;
-- Views CREATE VIEW view_stats ASSELECT1::intAS a, 2::intAS b; ALTER VIEW view_stats ALTERCOLUMN a SETDEFAULT2; DROP VIEW view_stats;
-- Foreign tables CREATEFOREIGN DATA WRAPPER wrapper_stats; CREATE SERVER server_stats FOREIGN DATA WRAPPER wrapper_stats; CREATEFOREIGNTABLE foreign_stats (a int) SERVER server_stats; ALTERFOREIGNTABLE foreign_stats ADDCOLUMN b integerDEFAULT1; ALTERFOREIGNTABLE foreign_stats ADDCONSTRAINT b_nonzero CHECK (b <> 0); DROPFOREIGNTABLE foreign_stats; DROP SERVER server_stats; DROPFOREIGN DATA WRAPPER wrapper_stats;
-- Functions CREATE FUNCTION func_stats(a text DEFAULT'a_data', b text DEFAULT lower('b_data'))
RETURNS text AS $$ SELECT $1::text || '_' || $2::text; $$ LANGUAGE SQL SET work_mem = '256kB'; DROP FUNCTION func_stats;
-- Rules CREATETABLE tab_rule_stats (a int, b int); CREATETABLE tab_rule_stats_2 (a int, b int, c int, d int); CREATE RULE rules_stats ASONINSERTTO tab_rule_stats DO INSTEAD INSERTINTO tab_rule_stats_2 VALUES(new.*, 1, 2); DROP RULE rules_stats ON tab_rule_stats; DROPTABLE tab_rule_stats, tab_rule_stats_2;
-- Types CREATE TYPE stats_type as (f1 numeric(35, 6), f2 numeric(35, 2)); DROP TYPE stats_type;
-- Triggers CREATETABLE trigger_tab_stats (a int, b int); CREATE FUNCTION trigger_func_stats () RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN return OLD; end; $$; CREATETRIGGER trigger_tab_stats
AFTER UPDATEON trigger_tab_stats FOREACH ROW WHEN (OLD.a < 0AND OLD.b < 1ANDtrue)
EXECUTE FUNCTION trigger_func_stats(); DROPTABLE trigger_tab_stats;
-- Policies CREATETABLE tab_policy_stats (a int, b int); CREATE POLICY policy_stats ON tab_policy_stats USING (a = 5) WITHCHECK (b < 5); DROPTABLE tab_policy_stats;
-- Statistics CREATETABLE tab_expr_stats (a int, b int); CREATE STATISTICS tab_expr_stats_1 (mcv) ON a, (2*a), (3*b) FROM tab_expr_stats; DROPTABLE tab_expr_stats;
-- Transaction statements
BEGIN;
ABORT;
BEGIN;
ROLLBACK; -- WORK
BEGIN WORK; COMMIT WORK;
BEGIN WORK;
ABORT WORK; -- TRANSACTION
BEGIN TRANSACTION; COMMIT TRANSACTION;
BEGIN TRANSACTION;
ABORT TRANSACTION; -- More isolation levels
BEGIN TRANSACTION DEFERRABLE; COMMIT TRANSACTION AND NO CHAIN;
BEGIN ISOLATION LEVEL SERIALIZABLE; COMMIT;
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; COMMIT; -- List of A_Const nodes, same lists.
BEGIN TRANSACTION READ ONLY, READWRITE, DEFERRABLE, NOT DEFERRABLE; COMMIT;
BEGIN TRANSACTION NOT DEFERRABLE, READ ONLY, READWRITE, DEFERRABLE; COMMIT; SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C"; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- Savepoints
BEGIN;
SAVEPOINT sp1;
SAVEPOINT sp2;
SAVEPOINT sp3;
SAVEPOINT sp4;
ROLLBACK TO sp4;
ROLLBACK TO SAVEPOINT sp4;
ROLLBACK TRANSACTION TO SAVEPOINT sp3; RELEASE sp3; RELEASE SAVEPOINT sp2;
ROLLBACK TO sp1; RELEASE SAVEPOINT sp1; COMMIT; SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C"; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- EXPLAIN statements -- A Query is used, normalized by the query jumbling. EXPLAIN (costs off) SELECT1; EXPLAIN (costs off) SELECT2; EXPLAIN (costs off) SELECT a FROM generate_series(1,10) AS tab(a) WHERE a = 3; EXPLAIN (costs off) SELECT a FROM generate_series(1,10) AS tab(a) WHERE a = 7;
SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C";
-- CALL CREATEORREPLACEPROCEDURE sum_one(i int) AS $$ DECLARE
r int;
BEGIN SELECT (i + i)::intINTO r;
END; $$ LANGUAGE plpgsql; CREATEORREPLACEPROCEDURE sum_two(i int, j int) AS $$ DECLARE
r int;
BEGIN SELECT (i + j)::intINTO r;
END; $$ LANGUAGE plpgsql; -- Overloaded functions. CREATEORREPLACEPROCEDURE overload(i int) AS $$ DECLARE
r int;
BEGIN SELECT (i + i)::intINTO r;
END; $$ LANGUAGE plpgsql; CREATEORREPLACEPROCEDURE overload(i text) AS $$ DECLARE
r text;
BEGIN SELECT i::text INTO r;
END; $$ LANGUAGE plpgsql; -- Mix of IN/OUT parameters. CREATEORREPLACEPROCEDURE in_out(i int, i2 OUTint, i3 INOUTint) AS $$ DECLARE
r int;
BEGIN
i2 := i;
i3 := i3 + i;
END; $$ LANGUAGE plpgsql; SELECT pg_stat_statements_reset() ISNOTNULLAS t; CALL sum_one(3); CALL sum_one(199); CALL sum_two(1,1); CALL sum_two(1,2); CALL overload(1); CALL overload('A'); CALL in_out(1, NULL, 1); CALL in_out(2, 1, 2); SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C";
-- COPY CREATETABLE copy_stats (a int, b int); SELECT pg_stat_statements_reset() ISNOTNULLAS t; -- Some queries with A_Const nodes.
COPY (SELECT1) TO STDOUT;
COPY (SELECT2) TO STDOUT;
COPY (INSERTINTO copy_stats VALUES (1, 1) RETURNING *) TO STDOUT;
COPY (INSERTINTO copy_stats VALUES (2, 2) RETURNING *) TO STDOUT;
COPY (UPDATE copy_stats SET b = b + 1 RETURNING *) TO STDOUT;
COPY (UPDATE copy_stats SET b = b + 2 RETURNING *) TO STDOUT;
COPY (DELETEFROM copy_stats WHERE a = 1 RETURNING *) TO STDOUT;
-- CREATE TABLE AS -- SELECT queries are normalized, creating matching query IDs. CREATETABLE ctas_stats_1 ASSELECT1AS a; DROPTABLE ctas_stats_1; CREATETABLE ctas_stats_1 ASSELECT2AS a; DROPTABLE ctas_stats_1; CREATETABLE ctas_stats_2 AS SELECT a AS col1, 2::intAS col2 FROM generate_series(1, 10) AS tab(a) WHERE a < 5AND a > 2; DROPTABLE ctas_stats_2; CREATETABLE ctas_stats_2 AS SELECT a AS col1, 4::intAS col2 FROM generate_series(1, 5) AS tab(a) WHERE a < 4AND a > 1; DROPTABLE ctas_stats_2; SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C"; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- CREATE MATERIALIZED VIEW -- SELECT queries are normalized, creating matching query IDs. CREATE MATERIALIZED VIEW matview_stats_1 AS SELECT a AS col1, 2::intAS col2 FROM generate_series(1, 10) AS tab(a) WHERE a < 5AND a > 2; DROP MATERIALIZED VIEW matview_stats_1; CREATE MATERIALIZED VIEW matview_stats_1 AS SELECT a AS col1, 4::intAS col2 FROM generate_series(1, 5) AS tab(a) WHERE a < 4AND a > 3; DROP MATERIALIZED VIEW matview_stats_1; SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C"; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- CREATE VIEW CREATE VIEW view_stats_1 AS SELECT a AS col1, 2::intAS col2 FROM generate_series(1, 10) AS tab(a) WHERE a < 5AND a > 2; DROP VIEW view_stats_1; CREATE VIEW view_stats_1 AS SELECT a AS col1, 4::intAS col2 FROM generate_series(1, 5) AS tab(a) WHERE a < 4AND a > 3; DROP VIEW view_stats_1; SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C"; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- Domains CREATE DOMAIN domain_stats ASintCHECK (VALUE > 0); ALTER DOMAIN domain_stats SETDEFAULT'3'; ALTER DOMAIN domain_stats ADDCONSTRAINT higher_than_one CHECK (VALUE > 1); DROP DOMAIN domain_stats; SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C"; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- SET statements. -- These use two different strings, still they count as one entry. CREATE ROLE regress_stat_set_1; CREATE ROLE regress_stat_set_2; SET work_mem = '1MB'; Set work_mem = '1MB'; SET work_mem = '2MB'; SET work_mem = DEFAULT; SET work_mem TODEFAULT; SET work_mem FROM CURRENT;
BEGIN; SET LOCAL work_mem = '128kB'; SET LOCAL work_mem = '256kB'; SET LOCAL work_mem = DEFAULT; SET LOCAL work_mem TODEFAULT; SET LOCAL work_mem FROM CURRENT; COMMIT;
RESET work_mem; SET enable_seqscan = off; SET enable_seqscan = on; SET SESSION work_mem = '300kB'; SET SESSION work_mem = '400kB';
RESET enable_seqscan; -- SET TRANSACTION ISOLATION
BEGIN; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; COMMIT; -- SET SESSION AUTHORIZATION SET SESSION SESSION AUTHORIZATION DEFAULT; SET SESSION AUTHORIZATION 'regress_stat_set_1'; SET SESSION AUTHORIZATION 'regress_stat_set_2';
RESET SESSION AUTHORIZATION;
BEGIN; SET LOCAL SESSION AUTHORIZATION DEFAULT; SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_1'; SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_2';
RESET SESSION AUTHORIZATION; COMMIT; -- SET SESSION CHARACTERISTICS SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY; SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY, READ ONLY; SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY, READWRITE; -- SET XML OPTION SET XML OPTION DOCUMENT; SET XML OPTION CONTENT; -- SET TIME ZONE SET TIME ZONE 'America/New_York'; SET TIME ZONE 'Asia/Tokyo'; SET TIME ZONE DEFAULT; SET TIME ZONE LOCAL; SET TIME ZONE 'CST7CDT,M4.1.0,M10.5.0';
RESET TIME ZONE;
SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C"; DROP ROLE regress_stat_set_1; DROP ROLE regress_stat_set_2; SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- -- Track the total number of rows retrieved or affected by the utility -- commands of COPY, FETCH, CREATE TABLE AS, CREATE MATERIALIZED VIEW, -- REFRESH MATERIALIZED VIEW and SELECT INTO -- CREATETABLE pgss_ctas ASSELECT a, 'ctas' b FROM generate_series(1, 10) a; SELECT generate_series(1, 10) c INTO pgss_select_into;
COPY pgss_ctas (a, b) FROM STDIN; 11 copy 12 copy 13 copy
\. CREATE MATERIALIZED VIEW pgss_matv ASSELECT * FROM pgss_ctas;
REFRESH MATERIALIZED VIEW pgss_matv;
BEGIN; DECLARE pgss_cursor CURSORFORSELECT * FROM pgss_matv; FETCH NEXT pgss_cursor; FETCH FORWARD 5 pgss_cursor; FETCH FORWARD ALL pgss_cursor; COMMIT;
SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C";
DROP MATERIALIZED VIEW pgss_matv; DROPTABLE pgss_ctas; DROPTABLE pgss_select_into;
SELECT pg_stat_statements_reset() ISNOTNULLAS t;
-- Special cases. Keep these ones at the end to avoid conflicts. SETSCHEMA'foo'; SETSCHEMA'public';
RESET ALL; SELECT calls, rows, query FROM pg_stat_statements ORDERBY query COLLATE"C";
SELECT pg_stat_statements_reset() ISNOTNULLAS t;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-08-08)
¤
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.