aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/src/sgml/config.sgml97
-rw-r--r--src/backend/nodes/params.c11
-rw-r--r--src/backend/utils/mb/stringinfo_mb.c2
3 files changed, 49 insertions, 61 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index c1128f89ec7..371d7838fb6 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -5984,13 +5984,13 @@ local0.* /var/log/postgresql
<para>
Causes the duration of each completed statement to be logged
if the statement ran for at least the specified amount of time.
- If this value is specified without units, it is taken as milliseconds.
- Setting this to zero prints all statement durations.
- Minus-one (the default) disables logging statement durations.
For example, if you set it to <literal>250ms</literal>
then all SQL statements that run 250ms or longer will be
logged. Enabling this parameter can be helpful in tracking down
unoptimized queries in your applications.
+ If this value is specified without units, it is taken as milliseconds.
+ Setting this to zero prints all statement durations.
+ Minus-one (the default) disables logging statement durations.
Only superusers can change this setting.
</para>
@@ -6030,49 +6030,39 @@ local0.* /var/log/postgresql
</term>
<listitem>
<para>
- Allows to sample the logging of the duration of each completed
- statement if the statement ran for at least the specified amount of
- time. If this value is specified without units, it is taken as milliseconds.
+ Allows sampling the duration of completed statements that ran for
+ at least the specified amount of time. This produces the same
+ kind of log entries as
+ <xref linkend="guc-log-min-duration-statement"/>, but only for a
+ subset of the executed statements, with sample rate controlled by
+ <xref linkend="guc-log-statement-sample-rate"/>.
+ For example, if you set it to <literal>100ms</literal> then all
+ SQL statements that run 100ms or longer will be considered for
+ sampling. Enabling this parameter can be helpful when the
+ traffic is too high to log all queries.
+ If this value is specified without units, it is taken as milliseconds.
Setting this to zero samples all statement durations.
Minus-one (the default) disables sampling statement durations.
- For example, if you set it to <literal>250ms</literal>
- then all SQL statements that run 250ms or longer will be considered
- for sampling, with sample rate is controlled by <xref linkend="guc-log-statement-sample-rate"/>.
- Enabling this parameter can be helpful when the traffic too high to
- sample all queries.
Only superusers can change this setting.
</para>
<para>
- This option has lower priority than <xref linkend="guc-log-min-duration-statement"/>,
- meaning that statements with durations exceeding <xref linkend="guc-log-min-duration-statement"/>
- are not subject to sampling and are always logged.
- </para>
-
- <para>
- For clients using extended query protocol, durations of the Parse,
- Bind, and Execute steps are logged independently.
+ This setting has lower priority
+ than <varname>log_min_duration_statement</varname>, meaning that
+ statements with durations
+ exceeding <varname>log_min_duration_statement</varname> are not
+ subject to sampling and are always logged.
</para>
- <note>
<para>
- When using this option together with
- <xref linkend="guc-log-statement"/>,
- the text of statements that are logged because of
- <varname>log_statement</varname> will not be repeated in the
- duration log message.
- If you are not using <application>syslog</application>, it is recommended
- that you log the PID or session ID using
- <xref linkend="guc-log-line-prefix"/>
- so that you can link the statement message to the later
- duration message using the process ID or session ID.
+ Other notes for <varname>log_min_duration_statement</varname>
+ apply also to this setting.
</para>
- </note>
</listitem>
</varlistentry>
<varlistentry id="guc-log-statement-sample-rate" xreflabel="log_statement_sample_rate">
- <term><varname>log_statement_sample_rate</varname> (<type>real</type>)
+ <term><varname>log_statement_sample_rate</varname> (<type>floating point</type>)
<indexterm>
<primary><varname>log_statement_sample_rate</varname> configuration parameter</primary>
</indexterm>
@@ -6080,43 +6070,40 @@ local0.* /var/log/postgresql
<listitem>
<para>
Determines the fraction of statements with duration exceeding
- <xref linkend="guc-log-min-duration-sample"/> to be logged.
- This is a statistical parameter, for example <literal>0.5</literal>
- means there is statistically one in two chances to log the statement.
- The default is <literal>1.0</literal>, meaning log all such
+ <xref linkend="guc-log-min-duration-sample"/> that will be logged.
+ Sampling is stochastic, for example <literal>0.5</literal> means
+ there is statistically one chance in two that any given statement
+ will be logged.
+ The default is <literal>1.0</literal>, meaning to log all sampled
statements.
- Setting this to zero disables sampling logging, same as setting
+ Setting this to zero disables sampled statement-duration logging,
+ the same as setting
<varname>log_min_duration_sample</varname> to
<literal>-1</literal>.
- <varname>log_statement_sample_rate</varname> is helpful when the
- traffic is too high to log all queries.
Only superusers can change this setting.
</para>
- <note>
- <para>
- Like all statement-logging options, this option can add significant
- overhead.
- </para>
- </note>
</listitem>
</varlistentry>
<varlistentry id="guc-log-transaction-sample-rate" xreflabel="log_transaction_sample_rate">
- <term><varname>log_transaction_sample_rate</varname> (<type>real</type>)
+ <term><varname>log_transaction_sample_rate</varname> (<type>floating point</type>)
<indexterm>
<primary><varname>log_transaction_sample_rate</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
- Set the fraction of transactions whose statements are all logged,
+ Sets the fraction of transactions whose statements are all logged,
in addition to statements logged for other reasons. It applies to
each new transaction regardless of its statements' durations.
- The default is <literal>0</literal>, meaning not to log statements
- from any additional transaction. Setting this to <literal>1</literal>
- logs all statements for all transactions.
- <varname>log_transaction_sample_rate</varname> is helpful to track a
- sample of transaction.
+ Sampling is stochastic, for example <literal>0.1</literal> means
+ there is statistically one chance in ten that any given transaction
+ will be logged.
+ <varname>log_transaction_sample_rate</varname> can be helpful to
+ construct a sample of transactions.
+ The default is <literal>0</literal>, meaning not to log
+ statements from any additional transactions. Setting this
+ to <literal>1</literal> logs all statements of all transactions.
Only superusers can change this setting.
</para>
<note>
@@ -6632,9 +6619,9 @@ log_line_prefix = '%m [%p] %q%u@%d/%a '
<para>
Controls whether bind parameters are logged when a statement is logged
as a result of <xref linkend="guc-log-min-error-statement"/>.
- It adds some overhead, as postgres will compute and store textual
- representations of parameter values in memory for all statements,
- even if they eventually do not get logged.
+ It adds some overhead, as <productname>PostgreSQL</productname> will
+ compute and store textual representations of parameter values in
+ memory for all statements, even if they eventually do not get logged.
This setting has no effect on statements logged due to
<xref linkend="guc-log-min-duration-statement"/> or
<xref linkend="guc-log-statement"/> settings, as they are always logged
diff --git a/src/backend/nodes/params.c b/src/backend/nodes/params.c
index b28ec3b6ce4..a57f9eea768 100644
--- a/src/backend/nodes/params.c
+++ b/src/backend/nodes/params.c
@@ -262,16 +262,16 @@ RestoreParamList(char **start_address)
/*
* BuildParamLogString
- * Return a string that represent the parameter list, for logging.
+ * Return a string that represents the parameter list, for logging.
*
* If caller already knows textual representations for some parameters, it can
* pass an array of exactly params->numParams values as knownTextValues, which
* can contain NULLs for any unknown individual values. NULL can be given if
* no parameters are known.
*
- * If maxlen is not zero, that's the maximum number of characters of the
- * input string printed; an ellipsis is added if more characters exist.
- * (Added quotes are not considered.)
+ * If maxlen is not zero, that's the maximum number of bytes of any one
+ * parameter value to be printed; an ellipsis is added if the string is
+ * longer. (Added quotes are not considered in this calculation.)
*/
char *
BuildParamLogString(ParamListInfo params, char **knownTextValues, int maxlen)
@@ -282,7 +282,8 @@ BuildParamLogString(ParamListInfo params, char **knownTextValues, int maxlen)
/*
* NB: think not of returning params->paramValuesStr! It may have been
- * generated with a different maxlen, and so unsuitable.
+ * generated with a different maxlen, and so be unsuitable. Besides that,
+ * this is the function used to create that string.
*/
/*
diff --git a/src/backend/utils/mb/stringinfo_mb.c b/src/backend/utils/mb/stringinfo_mb.c
index c153b770076..791a667daea 100644
--- a/src/backend/utils/mb/stringinfo_mb.c
+++ b/src/backend/utils/mb/stringinfo_mb.c
@@ -26,7 +26,7 @@
/*
* appendStringInfoStringQuoted
*
- * Append up to maxlen characters from s to str, or the whole input string if
+ * Append up to maxlen bytes from s to str, or the whole input string if
* maxlen <= 0, adding single quotes around it and doubling all single quotes.
* Add an ellipsis if the copy is incomplete.
*/