oracle 数据库 11g 中引入的实时 sql 监控提供了一个非常有效的方法,来识别资源密集型运行时性能问题、长时间运行、并行运行的 sql 语句。 em 使用新的、细粒度的 sql 统计信息显示 sql 执行的详细信息,开箱即用的跟踪,对生产系统没有性能损失。执行计划每一步的统计数据都由关键性能指标跟踪,包括经过时间、cpu 时间、读写次数、i/o 等待时间和其他各种等待时间。这允许 dba 以更大的方式分析 sql 执行详细信息,并决定是否终止长时间运行的 sql,让 sql 完成,还是发送 sql 进行调优。
v$sql_monitor 中的一个条目专用于单次执行 sql 语句,为了唯一标识同一 sql 语句的两次执行,组合键由三个属性来组成:
sql_id (用于标识 sql 语句的 sql 标识符)
sql_exec_start (开始执行时间戳)
sql_exec_id(内部生成的标识符,以确保此次sql的执行真正唯一)
# id: 执行计划序号,有->说明正在执行此步
# rows (estim): 评估返回的行数 --统计信息不准时往往返回1
# time active(s): 该步操作持续的active的时间,单位是秒 --一般不看
# start active: 该步操作在执行计划中相对于sql开始执行时的时间,单位是秒 --一般不看
# execs:表示在执行计划中运行的次数 --重要
# rows (actual): 产生的行数 --重要
# mem:对内存的消耗 --有时还会有对temp的消耗信息
# activity (percent):所用的数据库时间占整个执行计划的百分比 --先看最大的
# activity detail(sample #):显示活动的本质,比如cpu、等待事件 --及被采样次数(秒)
阅读(1451) | 评论(0) | 转发(0) |