pg.ddx.io pgsql-performance@postgresql.org mailing list archivehelp / color / mirror / Atom feed
[PATCH v2 4/4] Change force_parallel_mode to a DEVELOPER GUC, and remove it from sample config.. 1+ messages / 1 participants [nested] [flat]
* [PATCH v2 4/4] Change force_parallel_mode to a DEVELOPER GUC, and remove it from sample config.. @ 2021-04-04 00:24 Justin Pryzby <pryzbyj@telsasoft.com> 0 siblings, 0 replies; 1+ messages in thread From: Justin Pryzby @ 2021-04-04 00:24 UTC (permalink / raw) ..to help avoid users finding this option and changing it in hopes that it'll make their queries faster, but without reading the documentation or understanding what it does. --- doc/src/sgml/config.sgml | 90 +++++++++---------- src/backend/utils/misc/guc.c | 2 +- src/backend/utils/misc/postgresql.conf.sample | 1 - 3 files changed, 46 insertions(+), 47 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index eb154cd669..4568a5c5a0 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -5912,51 +5912,6 @@ SELECT * FROM parent WHERE key = 2400; </listitem> </varlistentry> - <varlistentry id="guc-force-parallel-mode" xreflabel="force_parallel_mode"> - <term><varname>force_parallel_mode</varname> (<type>enum</type>) - <indexterm> - <primary><varname>force_parallel_mode</varname> configuration parameter</primary> - </indexterm> - </term> - <listitem> - <para> - Allows the use of parallel queries for testing purposes even in cases - where no performance benefit is expected. - The allowed values of <varname>force_parallel_mode</varname> are - <literal>off</literal> (use parallel mode only when it is expected to improve - performance), <literal>on</literal> (force parallel query for all queries - for which it is thought to be safe), and <literal>regress</literal> (like - <literal>on</literal>, but with additional behavior changes as explained - below). - </para> - - <para> - More specifically, setting this value to <literal>on</literal> will add - a <literal>Gather</literal> node to the top of any query plan for which this - appears to be safe, so that the query runs inside of a parallel worker. - Even when a parallel worker is not available or cannot be used, - operations such as starting a subtransaction that would be prohibited - in a parallel query context will be prohibited unless the planner - believes that this will cause the query to fail. If failures or - unexpected results occur when this option is set, some functions used - by the query may need to be marked <literal>PARALLEL UNSAFE</literal> - (or, possibly, <literal>PARALLEL RESTRICTED</literal>). - </para> - - <para> - Setting this value to <literal>regress</literal> has all of the same effects - as setting it to <literal>on</literal> plus some additional effects that are - intended to facilitate automated regression testing. Normally, - messages from a parallel worker include a context line indicating that, - but a setting of <literal>regress</literal> suppresses this line so that the - output is the same as in non-parallel execution. Also, - the <literal>Gather</literal> nodes added to plans by this setting are hidden - in <literal>EXPLAIN</literal> output so that the output matches what - would be obtained if this setting were turned <literal>off</literal>. - </para> - </listitem> - </varlistentry> - <varlistentry id="guc-plan-cache_mode" xreflabel="plan_cache_mode"> <term><varname>plan_cache_mode</varname> (<type>enum</type>) <indexterm> @@ -10462,6 +10417,51 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' </listitem> </varlistentry> + <varlistentry id="guc-force-parallel-mode" xreflabel="force_parallel_mode"> + <term><varname>force_parallel_mode</varname> (<type>enum</type>) + <indexterm> + <primary><varname>force_parallel_mode</varname> configuration parameter</primary> + </indexterm> + </term> + <listitem> + <para> + Allows the use of parallel queries for testing purposes even in cases + where no performance benefit is expected. + The allowed values of <varname>force_parallel_mode</varname> are + <literal>off</literal> (use parallel mode only when it is expected to improve + performance), <literal>on</literal> (force parallel query for all queries + for which it is thought to be safe), and <literal>regress</literal> (like + <literal>on</literal>, but with additional behavior changes as explained + below). + </para> + + <para> + More specifically, setting this value to <literal>on</literal> will add + a <literal>Gather</literal> node to the top of any query plan for which this + appears to be safe, so that the query runs inside of a parallel worker. + Even when a parallel worker is not available or cannot be used, + operations such as starting a subtransaction that would be prohibited + in a parallel query context will be prohibited unless the planner + believes that this will cause the query to fail. If failures or + unexpected results occur when this option is set, some functions used + by the query may need to be marked <literal>PARALLEL UNSAFE</literal> + (or, possibly, <literal>PARALLEL RESTRICTED</literal>). + </para> + + <para> + Setting this value to <literal>regress</literal> has all of the same effects + as setting it to <literal>on</literal> plus some additional effects that are + intended to facilitate automated regression testing. Normally, + messages from a parallel worker include a context line indicating that, + but a setting of <literal>regress</literal> suppresses this line so that the + output is the same as in non-parallel execution. Also, + the <literal>Gather</literal> nodes added to plans by this setting are hidden + in <literal>EXPLAIN</literal> output so that the output matches what + would be obtained if this setting were turned <literal>off</literal>. + </para> + </listitem> + </varlistentry> + <varlistentry id="guc-ignore-system-indexes" xreflabel="ignore_system_indexes"> <term><varname>ignore_system_indexes</varname> (<type>boolean</type>) <indexterm> diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 2b9583cc77..598813da2d 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -4922,7 +4922,7 @@ static struct config_enum ConfigureNamesEnum[] = }, { - {"force_parallel_mode", PGC_USERSET, QUERY_TUNING_OTHER, + {"force_parallel_mode", PGC_USERSET, DEVELOPER_OPTIONS, gettext_noop("Forces use of parallel query facilities."), gettext_noop("If possible, run query using a parallel worker and with parallel restrictions."), GUC_EXPLAIN diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index cc9edc410f..a38fe18886 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -421,7 +421,6 @@ #from_collapse_limit = 8 #join_collapse_limit = 8 # 1 disables collapsing of explicit # JOIN clauses -#force_parallel_mode = off #jit = on # allow JIT compilation #plan_cache_mode = auto # auto, force_generic_plan or # force_custom_plan -- 2.17.0 --0eh6TmSyL6TZE2Uz-- ^ permalink raw reply [nested|flat] 1+ messages in thread
only message in thread Thread overview: 1+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2021-04-04 00:24 [PATCH v2 4/4] Change force_parallel_mode to a DEVELOPER GUC, and remove it from sample config.. Justin Pryzby <pryzbyj@telsasoft.com>
This inbox is served by DDX for PostgreSQL; see mirroring instructions for how to clone and mirror all data and code used for this inbox