STATEMENT_HISTORY
获得当前节点的执行语句的信息。查询视图必须具有sysadmin权限或者monitor admin权限。只可在系统库中查询到结果,用户库中无法查询。
表 1 STATEMENT_HISTORY字段
软解析次数,n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。 |
||
硬解析次数,n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。 |
||
通过物理连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。通过该字段可以分析SQL在分布式系统下的网络开销,单机模式下不支持该字段。例如:{“time”:xxx, “n_calls”:xxx, “size”:xxx}。 |
||
通过物理连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。通过该字段可以分析SQL在分布式系统下的网络开销,单机模式下不支持该字段。例如:{“time”:xxx, “n_calls”:xxx, “size”:xxx}。 |
||
通过逻辑连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。通过该字段可以分析SQL在分布式系统下的网络开销,单机模式下不支持该字段。例如:{“time”:xxx, “n_calls”:xxx, “size”:xxx}。 |
||
通过逻辑连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。通过该字段可以分析SQL在分布式系统下的网络开销,单机模式下不支持该字段。例如:{“time”:xxx, “n_calls”:xxx, “size”:xxx}。 |
||
记录级别的值是L0时,开始记录等待事件的列表。显示当前语句event等待相关的统计信息。具体事件信息见等待状态列表、轻量级锁等待事件列表、IO等待事件列表和事务锁等待事件列表。关于每种事务锁对业务的影响程度,请参考LOCK语法小节的详细描述。 记录级别的值是L2时,开始记录语句锁事件的列表,该列表按时间顺序记录事件,记录的数量受参数track_stmt_details_size的影响。
|
||
advise |
text |
可能导致该SQL为slow SQL的风险信息。(可能同时存在多种风险)。
|
net_send_time |
bigint |
网络上的时间花销。 |
srt1_q |
bigint |
Q报文执行的耗时 |
srt2_simple_query |
bigint |
exec_simple_query执行耗时。 |
srt3_analyze_rewrite |
bigint |
pg_analyze_and_rewrite执行耗时。 |
srt4_plan_query |
bigint |
pg_plan_queries执行耗时。 |
srt5_light_query |
bigint |
exec_query_through_light_proxy执行耗时。 |
srt6_p |
bigint |
P报文执行的耗时。 |
srt7_b |
bigint |
B报文执行的耗时。 |
srt8_e |
bigint |
E报文执行的耗时。 |
srt9_d |
bigint |
D报文执行的耗时。 |
srt10_s |
bigint |
S报文执行的耗时。 |
srt11_c |
bigint |
C报文执行的耗时。 |
srt12_u |
bigint |
U报文执行的耗时。 |
srt13_before_query |
bigint |
进入下一次报文处理前的耗时。 |
srt14_after_query |
bigint |
完成报文处理后的耗时。 |
rtt_unknown |
bigint |
未知时间消耗,可能是session切换耗时。 |
parent_query_id |
bigint |
存储过程中PL/SQL父语句的信息。 |
相关特性
对应系统表statement_history,主要目的是记录数据库运行中产生的sql与其运行信息,保证即便数据库重启,SQL信息也依然可以查询到。
一般使用形式:
select * from DBE_PERF.statement_history;
主要受到以下参数控制:
log_duration:是否记录慢查询。
log_min_duration_statement:单位毫秒,标记SQL的慢查询时间,0记录所有SQL,-1则不记录任何信息。
track_stmt_stat_level:默认为
OFF,L0
。参数第一部分为非OFF情况下,会记录所有SQL,第一部分为OFF,第二部分为非OFF情况下,仅记录慢SQL。track_stmt_parameter:追踪语句更详细内容。
此处代码判断逻辑为(以下各个条件为或判定,满足其一即可):
1、 打开了动态语句追踪功能:采用dynamic_func_control追踪STMT。
2、 track_stmt_stat_level追踪第一个level为L0或者更高。
3、track_stmt_stat_level追踪第二个level为L0或者更高,且语句运行时间大于log_min_duration_statement设定值,且log_min_duration_statement大于等于0,并且没有打开track_stmt_parameter。
4、打开track_stmt_parameter,并且时间模式第一个值(消耗的DBTIME)大于0。