https://help.kingbase.com.cn/v8/development/sql-plsql/ref-extended-plug-in/auto_explain.html
auto_explain是KingbaseES的一个扩展插件,主要用于在服务器端自动记录SQL语句的执行计划,写入到KingbaseES日志文件中。
插件在被服务程序加载后,其相关功能生效,插件在服务端程序启动时不是默认加载。
插件名为 auto_explain
插件版本 V1.0
如需 KingbaseES 数据库启动时默认加载该插件,将其添加到 kingbase.conf 文件的 shared_preload_libraries 中。
如需在数据库启动后使用该插件,在ksql中使用LOAD命令即可。
示例:
shared_preload_libraries = 'auto_explain'
auto_explain.log_min_duration
SQL语句执行时间的阈值,所有时间超过这个阈值的SQL语句的执行计划都会被记录到日志中,单位为毫秒,0表示记录所有语句,-1表示不记录
auto_explain.log_analyze
该参数控制是否加入analyze功能,即除了计划外把实际执行时间等信息也打出来,注意该参数打开后会对性能产生较大影响,默认值为off
auto_explain.log_settings
该参数控制是否打印已修改的配置选项的信息,输出中仅包含影响执行计划的配置选项,默认值为off
auto_explain.log_verbose
该参数控制是否在执行计划中打印更为详细的输出信息,默认值为off
auto_explain.log_buffers
该参数控制是否在执行计划中打印缓冲区使用的信息,默认值为off
auto_explain.log_wal
该参数控制是否打印WAL日志的信息,默认值为off
auto_explain.log_triggers
该参数控制是否打印触发器的统计信息,注意只有当auto_explain.log_analyze参数开启时,该参数才有效,默认值为off
auto_explain.log_format
该参数用于控制执行计划的输出格式,可以是text、xml、json、yaml,默认值为text
auto_explain.log_level
该参数用于控制auto_explain插件的日志级别,其值同服务器的日志级别相同,默认值为LOG
auto_explain.log_nested_statements
该参数用于控制是否支持嵌套语句(在一个函数内执行的语句)的执行计划输出,当它关闭时,只记录顶层语句的计划,默认值为off
auto_explain.log_timing
该参数用于控制是否打印计划中每个节点的计时信息,注意只有当auto_explain.log_analyze参数开启时,该参数才有效,默认值为off
auto_explain.sample_rate
该参数用于控制打印会话中语句计划的比例,默认值为1,表示输出所有语句的计划
KingbaseES加载 auto_explain 插件后,根据其参数配置,将SQL语句的执行计划输出到日志文件里。
修改 kingbase.conf 文件中 shared_preload_libraries
参数后重启数据库。
示例:
shared_preload_libraries = ''
auto_explain扩展插件通常随着KingbaseES安装包一并升级。通常情况下用户无须单独升级该插件。