本文共 1017 字,大约阅读时间需要 3 分钟。
Oracle 中的SQL概要和自动调整优化器(Automatic Tuning Optimizer)
从Oracle 10g起,可以将SQL调优的工作委派给一个被称为自动调整优化器(Automatic Tuning Optimizer)的查询优化器扩展来做。它和查询优化器同属于一个组件而且无法在第一时间得到高效的执行计划。查询优化器被强制必须以最快的速度产生执行计划,典型的在秒级以内。而自动调整优化器可以花较长的时间产生一个高效的执行计划。另外,它还可以使用一些耗时的技术如假设分析,并加强对动态采样技术的利用来核实它的估计值。
自动调整优化器是通过SQL调优建议器(SQL Tuning Advisor)暴露给外界使用的。它的目的是分析SQL语句并建议如何使用一些方法来提高语句的性能,包括收集遗漏的或过时的对象统计,创建新索引,改变SQL语句或采用SQL概要。
SQL概要只能通过SQL调优建议器来创建。
什么是SQL概要?
SQL概要是一个对象,它包含了可以帮助查询优化器为一个特定的SQL语句找到高效执行计划的信息。这些信息包括执行环境、对象统计和对查询优化器所做评估的修正信息。它的最大特点之一就是在不修改SQL语句和会话执行环境的情况下影响查询优化器的决定。换句话说,它对连接到数据库引擎的应用程序是透明的。
生成SQL概要的主要步骤如下:
1、用户将表现不佳的SQL语句传送给SQL调优建议器。 2、SQL调优建议器要求自动调整优化器为优化SQL语句给出建议。 3、查询优化器取得系统统计信息和SQL语句引用对象的对象统计信息,以及构成执行环境的初始化参数。 4、SQL语句分析完毕。在此期间,自动调整优化器进行假设分析,并部分执行SQL语句来证实它的估计。 5、自动调整优化器返回SQL概要给SQL调优建议器。 6、用户接受SQL概要。 7、将SQL概要存储到数据字典中。
执行SQL语句时的步骤:
执行SQL语句时的步骤;
A. 用户传送要执行的SQL语句给SQL引擎;
B. SQL引擎要求查询优化器提供执行计划; C. 查询优化器取得系统统计信息,SQL语句引用对象的对象统计信息、SQL概要和构成执行环境的初始化参数; D. 查询优化器分析SQL语句并产生执行计划; E. 将执行计划传递给SQL引擎; F. SQL引擎执行SQL语句。SQL调优建议器的核心接口是通过dbms_sqltune包来提供的。