aboutsummaryrefslogtreecommitdiff
path: root/contrib/pg_stat_statements/sql/parallel.sql
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2024-10-09 08:30:45 +0900
committerMichael Paquier <michael@paquier.xyz>2024-10-09 08:30:45 +0900
commitcf54a2c002544a4b7934deb44c895750aadb0a3c (patch)
tree5732146babb49b1fd76163570404e00e3a6f3bf4 /contrib/pg_stat_statements/sql/parallel.sql
parentde3a2ea3b264a5625cda6d8968f75e9bfb4dbdcb (diff)
downloadpostgresql-cf54a2c002544a4b7934deb44c895750aadb0a3c.tar.gz
postgresql-cf54a2c002544a4b7934deb44c895750aadb0a3c.zip
pg_stat_statements: Add columns to track parallel worker activity
The view pg_stat_statements gains two columns: - parallel_workers_to_launch, the number of parallel workers planned to be launched. - parallel_workers_launched, the number of parallel workers actually launched. The ratio of both columns offers hints that parallel workers are lacking on a per-statement basis, requiring some tuning, in coordination with "calls", the number of times a query is executed. As of now, these numbers are tracked within Gather and GatherMerge nodes. They could be extended to utilities that make use of parallel workers (parallel btree and brin, VACUUM). The module is bumped to 1.12. Author: Guillaume Lelarge Discussion: https://postgr.es/m/CAECtzeWtTGOK0UgKXdDGpfTVSa5bd_VbUt6K6xn8P7X+_dZqKw@mail.gmail.com
Diffstat (limited to 'contrib/pg_stat_statements/sql/parallel.sql')
-rw-r--r--contrib/pg_stat_statements/sql/parallel.sql26
1 files changed, 26 insertions, 0 deletions
diff --git a/contrib/pg_stat_statements/sql/parallel.sql b/contrib/pg_stat_statements/sql/parallel.sql
new file mode 100644
index 00000000000..4ce1573d132
--- /dev/null
+++ b/contrib/pg_stat_statements/sql/parallel.sql
@@ -0,0 +1,26 @@
+--
+-- Tests for parallel statistics
+--
+
+SET pg_stat_statements.track_utility = FALSE;
+
+-- encourage use of parallel plans
+SET parallel_setup_cost = 0;
+SET parallel_tuple_cost = 0;
+SET min_parallel_table_scan_size = 0;
+SET max_parallel_workers_per_gather = 2;
+
+CREATE TABLE pgss_parallel_tab (a int);
+
+SELECT pg_stat_statements_reset() IS NOT NULL AS t;
+
+SELECT count(*) FROM pgss_parallel_tab;
+
+SELECT query,
+ parallel_workers_to_launch > 0 AS has_workers_to_launch,
+ parallel_workers_launched > 0 AS has_workers_launched
+ FROM pg_stat_statements
+ WHERE query ~ 'SELECT count'
+ ORDER BY query COLLATE "C";
+
+DROP TABLE pgss_parallel_tab;