No.7
KingbaseES中定位慢查询的手段有?()
A.
查看WAL日志
B.
设置log_min_duration_statement
C.
通过查看sys_stat_activity
D.
设置log_statement
【答案】BC
- log_min_duration_statement (integer)
如果语句运行至少指定的毫秒数,将导致记录每一个这种完成的语句的持续时间。将这个参数设置为零将打印所有语句的执行时间。设置为 -1 (默认值)将停止记录语句持续时间。例如,如果你设置它为250ms,那么所有运行 250ms
或更久的 SQL 语句将被记录。启用这个参数可以有助于追踪应用中未优化的查询。只有超级用户可以改变这个设置。
对于使用扩展查询协议的客户端,解析、绑定和执行步骤的持续时间将被独立记录。
注意: 当把这个选项和log_statement一起使用时,已经被log_statement记录的语句文本不会在持续时间日志消息中重复。如果你没有使用syslog,我们推荐你使用log_line_prefix记录 PID 或会话 ID,这样你可以使用进程 ID
或会话 ID 把语句消息链接到后来的持续时间消息。
- log_statement (enum)
控制哪些 SQL 语句被记录。有效值是 none (off)、ddl、mod和 all(所有语句)。ddl记录所有数据定义语句,例如CREATE、ALTER和 DROP语句。mod记录所有ddl语句,外加数据修改语句例如INSERT, UPDATE、DELETE、TRUNCATE, 和COPY FROM。如果PREPARE、EXECUTE和 EXPLAIN ANALYZE包含合适类型的命令,它们也会被记录。对于使用扩展查询协议的客户端,当收到一个执行消息时会产生日志并且会包括绑定参数的值(任何内嵌的单引号会被双写)。
默认值是none。只有超级用户可以改变这个设置。
注意: 即使设置了log_statement=all,包含简单语法错误的语句也不会被记录。因为仅在完成基本的语法分析并确定了语句类型之后才记录日志。在使用扩展查询协议的情况下,在执行阶段之前(语法分析或规划阶段)同样不会记录。将log_min_error_statemen设为ERROR 或更低才能记录这些语句。




