一 导读
优化在硬件和非系统故障的情况下,对于提升数据库本身的性能非常重要。每一种类型的数据库都有自己不同的方式去跟踪优化数据库,这些方式中不仅仅包含了数据库系统本身参数层面的优化,而且也包括对 SQL 语句的优化。其中,对于 SQL 语句的优化是 DBA 经常需要接触的工作。因此需要经常关住慢 SQL 语句,以对其进行追踪优化。
二 数据库参数
PostgreSQL 中的慢 SQL 追踪是通过以记录日志的方式进行分析,追踪的,因此,需要优化 SQL 需要启动日志收集功能。以 RPM 方式安装的数据库日志收集功能默认是打开的,以源码编译的方式安装的数据库日志收集功能是关闭的。
启动日志收集功能
重新启动数据库
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
再次查看参数
2.1 log_min_duration_statement
该参数设置为对于单个 SQL 最小的执行时间,执行时间大于这个值的语句都将会被记录。该参数默认会记录所有的 SQL 语句。如果没有指定其单位,该单位默认以 ms 为单位。
如设置记录的慢 SQL 语句为 2s,则日志中只记录执行大于 2s 的 SQL 语句。
如下示例:
上面 SQL 语句执行时间为 5s,那么该 SQL 语句将会被记录到日志中。查看日志内容
2.2 log_statement
该参数用来设置记录语句的类型,允许的值为 none,ddl,mod 和 all。默认该参数值为 none,如果修改为 all,会导致数据库日志格式发生变化,如果没有特别配置可查询视图,可能会导致无法解析慢日志。通常,如果启用 log_min_duration_statement 参数,那么 log_min_duration_statement 参数需要结合 log_statement 参数一起使用。
mod:记录所有的 DDL 和数据库修改的语句,如 INSERT、UPDATE、DELETE、TRUNCATE、COPY FROM 等。
ddl:仅仅记录 DDL 语句。如 CREATE 、ALTER 、DROP。
如下示例:
Speak Your Mind