diff options
author | Fujii Masao <fujii@postgresql.org> | 2020-07-03 11:35:22 +0900 |
---|---|---|
committer | Fujii Masao <fujii@postgresql.org> | 2020-07-03 11:37:24 +0900 |
commit | 8d459762b10372e48845a49b305f4e1e165fe173 (patch) | |
tree | 8468bf183e1f75656e5c7508c57adb2a40b90000 | |
parent | 83fa48c8cd26c9a8171a85e786bb6ae1c5b04139 (diff) | |
download | postgresql-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.out | 1 | ||||
-rw-r--r-- | contrib/pg_stat_statements/pg_stat_statements.c | 2 | ||||
-rw-r--r-- | contrib/pg_stat_statements/sql/pg_stat_statements.sql | 1 | ||||
-rw-r--r-- | doc/src/sgml/pgstatstatements.sgml | 17 |
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> |