12.1 SQL自动调优概述
12.1.1优化器模式
1.普通模式
对于大部分的SQL语句都会产生一个合理的执行计划。普通模式下,优化器执行操作有一个严格的时间限制,一般在几百毫秒内就必须找到一个很好的执行计划。
2.调优模式
优化模式下,优化器需要执行额外的分析工作,检验在普通模式下产生的执行计划是否可以得到改进,查询优化器的输出结果不是一个执行计划,而是一系列动作,以及生成一个显著优异计划的理由和预期收益。在调优模式下,优化器能使用数分钟来优化一个单一SQL语句。每次调用自动调优优化器都需要耗费大量的时间和资源,每个查询都将被硬解析。自动调优优化器意在用于对整个系统产生非凡影响的复杂并且高负载的SQL语句。数据库自诊断检测功能(ADDM)将主动识别出可以成为SQL自动调优良好候补的高负载SQL语句。详细内容见
Chapter 6, "Automatic Performance Diagnostics" .
12.1.2调优分析的种类
1.统计信息分析
2.SQL Profiling
3.访问途径分析
4.SQL语句结构分析
确认无重复数据存在时使用UNION ALL比UINON高效
12.2 SQL调优顾问
对多条SQL语句调优时,首先需要创建一个SQL调优集合(SQL Tuning Set),STS是一个存储着SQL语句及其执行上下文信息的数据库对象,可以通过命令行APIs手动创建,也可以通过企业管理器自动创建
12.2.1输入源
1.ADDM
默认情况下,ADDM主动每小时对自动负载信息库收集的关键统计信息做分析,检查出所有那些包含高负载SQL语句的性能问题。如果检测出高负载SQL语句,ADDM将建议在SQL语句上运行SQL调优顾问。
2.高负载SQL语句
AWR所捕获的高负载SQL语句
3.游标缓存
最近运行且尚未被AWR捕获的SQL语句。游标缓存结合AWR将提供一种能力,这种能力可以检测并且调优,从当前时间至AWR的保留期这一时间段内,所有的高负载SQL语句,这个保留期默认至少为7天。
4.SQL调优集合
STS包含那些尚未部署的SQL语句,目的在于衡量他们的个体性能,或者识别出那些表现差强人意的语句。