aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2020-07-03 11:35:22 +0900
committerFujii Masao <fujii@postgresql.org>2020-07-03 11:37:24 +0900
commit8d459762b10372e48845a49b305f4e1e165fe173 (patch)
tree8468bf183e1f75656e5c7508c57adb2a40b90000
parent83fa48c8cd26c9a8171a85e786bb6ae1c5b04139 (diff)
downloadpostgresql-8d459762b10372e48845a49b305f4e1e165fe173.tar.gz
postgresql-8d459762b10372e48845a49b305f4e1e165fe173.zip
Change default of pg_stat_statements.track_planning to off.
Since v13 pg_stat_statements is allowed to track the planning time of statements when track_planning option is enabled. Its default was on. But this feature could cause more terrible spinlock contentions in pg_stat_statements. As a result of this, Robins Tharakan reported that v13 beta1 showed ~45% performance drop at high DB connection counts (when compared with v12.3) during fully-cached SELECT-only test using pgbench. To avoid this performance regression by the default setting, this commit changes default of pg_stat_statements.track_planning to off. Back-patch to v13 where pg_stat_statements.track_planning was introduced. Reported-by: Robins Tharakan Author: Fujii Masao Reviewed-by: Julien Rouhaud Discussion: https://postgr.es/m/2895b53b033c47ccb22972b589050dd9@EX13D05UWC001.ant.amazon.com
-rw-r--r--contrib/pg_stat_statements/expected/pg_stat_statements.out1
-rw-r--r--contrib/pg_stat_statements/pg_stat_statements.c2
-rw-r--r--contrib/pg_stat_statements/sql/pg_stat_statements.sql1
-rw-r--r--doc/src/sgml/pgstatstatements.sgml17
4 files changed, 18 insertions, 3 deletions
diff --git a/contrib/pg_stat_statements/expected/pg_stat_statements.out b/contrib/pg_stat_statements/expected/pg_stat_statements.out
index f615f8c2bfd..c3f013860ae 100644
--- a/contrib/pg_stat_statements/expected/pg_stat_statements.out
+++ b/contrib/pg_stat_statements/expected/pg_stat_statements.out
@@ -3,6 +3,7 @@ CREATE EXTENSION pg_stat_statements;
-- simple and compound statements
--
SET pg_stat_statements.track_utility = FALSE;
+SET pg_stat_statements.track_planning = TRUE;
SELECT pg_stat_statements_reset();
pg_stat_statements_reset
--------------------------
diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c
index cef8bb5a49a..65ac301b99f 100644
--- a/contrib/pg_stat_statements/pg_stat_statements.c
+++ b/contrib/pg_stat_statements/pg_stat_statements.c
@@ -442,7 +442,7 @@ _PG_init(void)
"Selects whether planning duration is tracked by pg_stat_statements.",
NULL,
&pgss_track_planning,
- true,
+ false,
PGC_SUSET,
0,
NULL,
diff --git a/contrib/pg_stat_statements/sql/pg_stat_statements.sql b/contrib/pg_stat_statements/sql/pg_stat_statements.sql
index 75c10554a89..6ed8e380280 100644
--- a/contrib/pg_stat_statements/sql/pg_stat_statements.sql
+++ b/contrib/pg_stat_statements/sql/pg_stat_statements.sql
@@ -4,6 +4,7 @@ CREATE EXTENSION pg_stat_statements;
-- simple and compound statements
--
SET pg_stat_statements.track_utility = FALSE;
+SET pg_stat_statements.track_planning = TRUE;
SELECT pg_stat_statements_reset();
SELECT 1 AS "int";
diff --git a/doc/src/sgml/pgstatstatements.sgml b/doc/src/sgml/pgstatstatements.sgml
index a13e28a84cc..430d8bf07c4 100644
--- a/doc/src/sgml/pgstatstatements.sgml
+++ b/doc/src/sgml/pgstatstatements.sgml
@@ -101,6 +101,8 @@
</para>
<para>
Number of times the statement was planned
+ (if <varname>pg_stat_statements.track_planning</varname> is enabled,
+ otherwise zero)
</para></entry>
</row>
@@ -110,6 +112,8 @@
</para>
<para>
Total time spent planning the statement, in milliseconds
+ (if <varname>pg_stat_statements.track_planning</varname> is enabled,
+ otherwise zero)
</para></entry>
</row>
@@ -119,6 +123,8 @@
</para>
<para>
Minimum time spent planning the statement, in milliseconds
+ (if <varname>pg_stat_statements.track_planning</varname> is enabled,
+ otherwise zero)
</para></entry>
</row>
@@ -128,6 +134,8 @@
</para>
<para>
Maximum time spent planning the statement, in milliseconds
+ (if <varname>pg_stat_statements.track_planning</varname> is enabled,
+ otherwise zero)
</para></entry>
</row>
@@ -137,6 +145,8 @@
</para>
<para>
Mean time spent planning the statement, in milliseconds
+ (if <varname>pg_stat_statements.track_planning</varname> is enabled,
+ otherwise zero)
</para></entry>
</row>
@@ -145,7 +155,10 @@
<structfield>stddev_plan_time</structfield> <type>double precision</type>
</para>
<para>
- Population standard deviation of time spent planning the statement, in milliseconds
+ Population standard deviation of time spent planning the statement,
+ in milliseconds
+ (if <varname>pg_stat_statements.track_planning</varname> is enabled,
+ otherwise zero)
</para></entry>
</row>
@@ -594,7 +607,7 @@
<para>
<varname>pg_stat_statements.track_planning</varname> controls whether
planning operations and duration are tracked by the module.
- The default value is <literal>on</literal>.
+ The default value is <literal>off</literal>.
Only superusers can change this setting.
</para>
</listitem>