目录
环境
文档用途
详细信息
环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:4.3.4.7
文档用途
软件开发商适配瀚高数据库时,会执行很多SQL语句,有的情况需要把SQL语句打印到log文件,便于查找和分析。
例如:
1)应用系统访问数据库时,执行的SQL语句报错了,需要把出错的SQL语句打印出来调查原因
2)应用系统访问数据库时,执行的SQL语句用时很长,需要对SQL语句进行优化,这时就需要把执行慢的SQL语句打印到log文件
3)客户想把所有SQL语句都打印,并且需要带有执行时间,这样方便查看SQL语句的具体执行时间
打印SQL语句到log文件,需要配置数据库的log参数,
配置方式一:通过(alter system set 参数名 = 值;)语句进行修改
配置方式二:修改data目录下的postgresql.conf文件。
配置之后,重启数据库服务即可生效。
详细信息
一、影响log打印的配置参数介绍
logging_collector:开启打印日志功能,on是开启,off是关闭,默认off。
log_statement:设定要打印的SQL语句类型,默认none,具体值有none、ddl、mod(增删改查、ddl)和all(所有语句)。
它不受log_duration和log_min_duration_statement的影响,会打印指定类型的SQL语句。
log_duration:显示打印时间,默认off。开启后,不管是否打印SQL语句,执行时间都会打印,不受其他参数的影响。
log_min_duration_statement:设定一个时间,设定的目的是为了打印出性能慢的SQL语句。默认-1,关闭该功能。
注:如果想打印执行慢的SQL语句,只设定log_min_duration_statement即可,参数log_statement需要设置为none。如果同时设置了log_statement和log_min_duration_statement,则会打印所有的语句,性能好的SQL语句也会被打印,原因是log_statement起主导作用。
参数组合配置:
log_statement --打印指定类型的SQL语句
log_statement、log_duration --打印带有执行时间的SQL语句
log_min_duration_statement>0、log_duration --打印执行慢且带有执行时间的SQL语句
log_min_duration_statement=0、log_duration --打印带有执行时间的所有SQL语句
二、下面介绍几种常用的log配置
1、不打印SQL语句的log配置
alter system set logging_collector = off;--关闭打印日志功能
alter system set log_statement = 'none';--不打印执行语句
alter system set log_min_duration_statement = -1;--关闭打印性能慢的执行语句
注:瀚高数据库安装之后,如果没有进行修改,可以不用执行上面语句,因为都是默认值。
2、打印SQL语句,不打印执行时间的log配置
alter system set logging_collector = on;开启打印日志功能
alter system set log_statement = 'all';--设定需要打印的SQL语句类型
3、打印SQL语句,也打印执行时间的log配置
alter system set logging_collector = on;开启打印日志功能
alter system set log_statement = 'all';--设定需要打印的SQL语句类型
alter system set log_duration = on;--开启打印执行时间的功能
或者
alter system set logging_collector = on;开启打印日志功能
alter system set log_statement = 'none';--设定了参数log_min_duration_statement,log_statement需要设置为none
alter system set log_duration = on;--开启打印执行时间的功能
alter system set log_min_duration_statement = 0;--设定为0,打印所有的SQL语句
4、打印性能慢的SQL语句的log配置,例如3ms以上
alter system set logging_collector = on;开启打印日志功能
alter system set log_statement = 'none';
alter system set log_duration = on;--开启打印执行时间的功能
alter system set log_min_duration_statement = 3ms;--设定性能慢的最小值
同时,打印SQL语句时,还需要配置以下参数:
alter system set log_destination = 'csvlog';--打印CSV格式的日志
alter system set log_directory = 'hgdb_log';--日志放置路径
alter system set log_file name = 'highgodb_%d.log';--日志文件名(按天命名)
alter system set log_rotation_age = '1d';--保留期限
alter system set log_rotation_size = 0;--设定日志大小,0代表无限制
alter system set log_truncate_on_rotation = on;--开启日志覆盖功能
测试结果示例请参照附件【HGDB的log打印配置测试结果.docx】
以上。
更多详细内容请登录【瀚高技术支持平台】 查看https://support.highgo.com/#/index/docContent/2e564cff04da45c5