log_transaction_sample_rate

一个系统参数,用于启用所有事务类型的样本记录

log_transaction_sample_rate 是一个 配置参数,用于启用所有事务类型的样本记录。

这对于获取正在执行的事务的合理代表性样本非常有用,而不会产生可能难以管理的日志量。

log_transaction_sample_ratePostgreSQL 12 中添加。

默认值

log_transaction_sample_rate 的默认值为:0

用法

当设置为 0(默认值)时,由于此设置,不会记录任何语句(尽管其他日志参数可能会生成语句日志)。

最大值为 1,表示将记录所有事务的所有语句。任何介于 01 之间的值都将导致记录相应百分比的事务。

权限

需要超级用户权限才能更改此参数。需要 SIGHUP 使任何更改生效。

注意事项和限制

  • 此参数适用于 PostgreSQL 集群中的所有数据库。
  • 启用后,它可能会导致额外的性能开销。
  • 记录的事务的实际数量可能与为 log_transaction_sample_rate 指定的值不完全匹配。

按 PostgreSQL 版本分列的详细信息

log_transaction_sample_rate (PostgreSQL 17)

设置 0
单位  
类别 报告和日志记录 / 何时记录
简短描述 设置要从中记录所有语句的事务的分数。
额外描述 使用 0.0(从不记录)到 1.0(记录所有事务的所有语句)之间的值。
上下文 超级用户
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
引导值 0
重置值 0
源文件  
源代码行号  
待处理重启

文档: log_transaction_sample_rate

log_transaction_sample_rate (PostgreSQL 16)

设置 0
单位  
类别 报告和日志记录 / 何时记录
简短描述 设置要从中记录所有语句的事务的分数。
额外描述 使用 0.0(从不记录)到 1.0(记录所有事务的所有语句)之间的值。
上下文 超级用户
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
引导值 0
重置值 0
源文件  
源代码行号  
待处理重启

文档: log_transaction_sample_rate

log_transaction_sample_rate (PostgreSQL 15)

设置 0
单位  
类别 报告和日志记录 / 何时记录
简短描述 设置要从中记录所有语句的事务的分数。
额外描述 使用 0.0(从不记录)到 1.0(记录所有事务的所有语句)之间的值。
上下文 超级用户
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
引导值 0
重置值 0
源文件  
源代码行号  
待处理重启

文档: log_transaction_sample_rate

log_transaction_sample_rate (PostgreSQL 14)

设置 0
单位  
类别 报告和日志记录 / 何时记录
简短描述 设置要从中记录所有语句的事务的分数。
额外描述 使用 0.0(从不记录)到 1.0(记录所有事务的所有语句)之间的值。
上下文 超级用户
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
引导值 0
重置值 0
源文件  
源代码行号  
待处理重启

文档: log_transaction_sample_rate

log_transaction_sample_rate (PostgreSQL 13)

设置 0
单位  
类别 报告和日志记录 / 何时记录
简短描述 设置要为新事务记录的事务的分数。
额外描述 记录一部分事务的所有语句。使用 0.0(从不记录)到 1.0(记录所有事务的所有语句)之间的值。
上下文 超级用户
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
引导值 0
重置值 0
源文件  
源代码行号  
待处理重启

文档: log_transaction_sample_rate

log_transaction_sample_rate (PostgreSQL 12)

设置 0
单位  
类别 报告和日志记录 / 何时记录
简短描述 设置要为新事务记录的事务的分数。
额外描述 记录一部分事务的所有语句。使用 0.0(从不记录)到 1.0(记录所有事务的所有语句)之间的值。
上下文 超级用户
变量类型 实数
来源 默认
最小值 0
最大值 1
枚举值  
引导值 0
重置值 0
源文件  
源代码行号  
待处理重启

文档: log_transaction_sample_rate

更改历史

示例

给定以下表格

CREATE TABLE foo (id serial primary key, val text);

并且 log_transaction_sample_rate 设置为 0.1,执行以下 shell 命令

for I in `seq 1 10`; do psql -c 'INSERT INTO foo VALUES(DEFAULT, CLOCK_TIMESTAMP()::TEXT)'; done

导致日志中出现一个条目

2019-12-24 14:32:08.340 UTC [27705] LOG:  parameter "log_transaction_sample_rate" changed to "0.1"
2019-12-24 14:32:15.182 UTC [16899] LOG:  duration: 2.130 ms  statement: INSERT INTO foo VALUES(DEFAULT, CLOCK_TIMESTAMP()::TEXT)

log_transaction_sample_rate 设置为 0.5 时,重新执行相同的 shell 命令会导致六个日志条目

2019-12-24 14:35:44.475 UTC [27705] LOG:  parameter "log_transaction_sample_rate" changed to "0.5"
2019-12-24 14:35:46.160 UTC [17023] LOG:  duration: 10.140 ms  statement: INSERT INTO foo VALUES(DEFAULT, CLOCK_TIMESTAMP()::TEXT)
2019-12-24 14:35:46.168 UTC [17025] LOG:  duration: 1.980 ms  statement: INSERT INTO foo VALUES(DEFAULT, CLOCK_TIMESTAMP()::TEXT)
2019-12-24 14:35:46.188 UTC [17027] LOG:  duration: 5.223 ms  statement: INSERT INTO foo VALUES(DEFAULT, CLOCK_TIMESTAMP()::TEXT)
2019-12-24 14:35:46.197 UTC [17029] LOG:  duration: 1.959 ms  statement: INSERT INTO foo VALUES(DEFAULT, CLOCK_TIMESTAMP()::TEXT)
2019-12-24 14:35:46.208 UTC [17031] LOG:  duration: 2.846 ms  statement: INSERT INTO foo VALUES(DEFAULT, CLOCK_TIMESTAMP()::TEXT)
2019-12-24 14:35:46.227 UTC [17035] LOG:  duration: 1.910 ms  statement: INSERT INTO foo VALUES(DEFAULT, CLOCK_TIMESTAMP()::TEXT)
2019-12-24 14:35:46.258 UTC [17041] LOG:  duration: 1.946 ms  statement: INSERT INTO foo VALUES(DEFAULT, CLOCK_TIMESTAMP()::TEXT)

(如上所述,采样事务的实际数量与参数中指定的值并不完全对应)。

分类

GUC 配置项日志记录

另请参阅

log_statement_sample_rate

反馈

提交任何关于“log_transaction_sample_rate”的评论、建议或更正 此处