暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

PG 打开慢查询

四海内皆兄弟 2021-03-25
680

这个其实并不难。

但是这里通过实验说明一个问题。就是与MySQL个别情况的对比。

SELECT name,setting,vartype,boot_val,reset_val FROM pg_settings

where name in('logging_collector','log_destination','log_directory','log_filename');

上图是查日志输出的目录和文件名。

下面的才是看你有没有开。

SELECT name,setting,vartype,boot_val,reset_val FROM pg_settings

where name in ('log_statement','log_min_duration_statement');



这里这个log_statement是none就是没开。

上面的最小执行语句log_min_duration_statement -1是不限制不记录的意思。单位是毫秒。

接下来我们要改配置文件了,到这里和MySQL大体一样。MySQL的是修改配置文件重启生效。


或者你直接set global slow_query_log=on;以及set global long=1;这样操作以后是后续连接会话才会生效。当前不生效。而且一旦重启就都采用my.cnf的参数了。所以稳妥起见,通常都是命令先改。同时my.cnf也改,防止重启还原。之所以这样是因为不停机生效。遇到意外宕机重启也不会被冲刷掉。


PG也可以这样改。不过我推荐是改参数文件,然后PG的特点是不停机重新加载这个文件生效。

conf文件添加。

log_statement = all    #需设置跟踪所有语句,否则只能跟踪出错信息 log_min_duration_statement = 1000    #milliseconds,记录执行1秒及以上的语句


select pg_reload_conf();


可见已经改好了。


测试一下。



MYSQL是select sleep(2);

PG的语法如上。

接下来看日志。

注意我之前用MySQL的语法打的错误的也记录了。


本来没有了,但是我经历过MySQL把slowlog移动走后,慢日志不记录的事情。那么看看PG怎么处理?

改名字。


后面再执行,我看没有新生成日志,我以为也不会记录了。那么就改回来吧。也就是说我第二个2秒的没记录,应该只记录了一个2秒和一个4秒。


但是实测发现。都记录了,也就是说,我改了名字后他虽然没有新生产,但是他在改名字的文件上去追加了。



文章转载自四海内皆兄弟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论