#SET AUTOTRACE
# 通用描述
SET AUTOTRACE为在yasql(YashanDB的SQL客户端工具)中实现的命令,用于生成trace报告,得到DML类型SQL语句(SELECT/INSERT/UPDATE/DELETE)的执行计划,以及执行计划实际产生的资源消耗和执行时间等信息。
当开启AUTOTRACE后,在客户端执行的DML类SQL语句,除输出SQL结果外,还将输出trace报告中的信息,信息内容依据AUTOTRACE的开启选项决定。
AUTOTRACE是常见的SQL调优工具,可在调优手册中获取更多信息。
# 语句定义
set autotrace::=
# set autotrace off
默认模式,不生成trace报告。
示例
SET AUTOTRACE OFF;
# set autotrace on explain
生成trace报告,且输出语句的执行结果和执行计划。
开启此设置后,后续执行的DML语句将输出执行计划,且执行计划中新增如下信息:
- A-ROWS:实际执行行数
- A-TIME:实际执行时间
- LOOP:数据提取次数
- MEMORY:算子占用的内存大小
- DISK:算子占用的磁盘空间大小
- PX RemoteInfo/PX LocalInfo:各节点数据交互的PX执行算子具体信息
- total time:激活时间,即开始执行到结束时间,单位毫秒,取各子线程最大值
- send_bytes:采样时间内发送的数据量,单位字节
- send_packets:采样时间内发送包的个数
- send_acks:采样时间内发送ack的个数
- wait_space_times:采样时间内因发送缓存不足而等待的次数
- wait_space_timeout:采样时间内因发送缓存不足而等待超时的次数
- recv_bytes:采样时间内接收的数据量,单位字节
- recv_packets:采样时间内接收包的个数
- recv_acks:采样时间内接收ack的个数
- wait_data_times:采样时间内接收端因数据未到来而等待的次数
- wait_data_timeout:采样时间内接收端因数据未到来而等待超时的次数
上述新增相比的是在开启设置之前由EXPLAIN语句输出的内容,且在开启设置之后执行EXPLAIN语句将同样新增上述信息。
示例
SET AUTOTRACE ON EXPLAIN;
# set autotrace on statistics
生成trace报告,且输出语句的执行结果和SQL执行统计信息(统计信息仅在STATISTICS_LEVEL参数为'ALL'模式下记录)。
开启此设置后,后续执行的DML语句将输出SQL执行所产生的redo日志大小、物理读、一致性读和递归调用等资源消耗数据。
示例
SET AUTOTRACE ON STATISTICS;
# set autotrace on
生成trace报告,且输出语句的执行结果、执行计划和执行统计信息。
示例
SET AUTOTRACE ON;
# set autotrace traceonly
生成trace报告,且不输出语句的执行结果,只输出语句的执行计划和执行统计信息。
示例
SET AUTOTRACE TRACEONLY;