Dav_笔记10:Using SQL Plan Management之3

将SQL计划基准与SQL Tuning Advisor一起使用

使用SQL Tuning Advisor调整SQL语句时,如果顾问程序找到调优计划并验证其性能优于从相应SQL计划基准中选择的计划,则建议接受SQL配置文件。 接受SQL配置文件后,数据库会将调整后的计划添加到相应的SQL计划基准。 但是,SQL Tuning Advisor不会在计划历史记录中验证现有的未接受计划。

在Oracle Database 11g中,自动配置的任务在维护窗口期间运行SQL Tuning Advisor。 此任务针对由自动工作负载存储库(AWR)快照中收集的执行性能数据标识的高负载SQL语句。 自动SQL调优任务实现SQL Tuning Advisor提出的SQL配置文件建议。 因此,数据库会自动将已调整的计划添加到已识别的高负载SQL语句的SQL计划基准中。

使用固定SQL计划基准

当SQL计划基准包含至少一个其FIXED属性设置为YES的已启用计划时,它将得到修复。您可以使用固定的SQL计划基准来修复SQL语句的可能计划集(通常是一个计划),或者通过将“概述”计划作为固定计划加载来迁移现有的存储轮廓。

如果固定的SQL计划基准还包含非固定计划,则优化程序优先于非固定计划的固定计划。因此,即使非固定计划可能具有更低的成本,优化器也会以最低的成本选择固定计划。如果没有任何固定计划可重现,则优化程序会选择最佳的非固定计划。

优化程序不会将新计划添加到固定的SQL计划基准。由于优化程序不会自动添加新计划,因此在执行DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE时,数据库不会生成固定的SQL计划基准。但是,您可以通过从共享SQL区域或SQL调优集手动将新计划加载到其中来发展固定的SQL计划基准。

使用SQL Tuning Advisor调整具有固定SQL计划基准的SQL语句时,SQL配置文件建议具有特殊含义。接受SQL配置文件后,数据库会将调整后的计划作为非固定计划添加到固定SQL计划基准。然而,如上所述,当存在可再现的固定计划时,优化器不使用调整的计划。因此,SQL调优的好处可能无法实现。要启用调整计划,请通过将其FIXED属性设置为YES,手动将调整后的计划更改为固定计划。

显示SQL计划基准

要查看存储在给定语句的SQL计划基准中的计划,请使用DBMS_XPLAN程序包的DISPLAY_SQL_PLAN_BASELINE函数。以下示例显示由句柄(sql_handle)指定的指定SQL语句的一个或多个执行计划:

SELECT * FROM TABLE(

DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(

sql_handle=>'SYS_SQL_209d10fabbedc741',

format=>'basic'));

或者,您可以通过提供计划名称(plan_name)来显示单个计划。

此函数使用存储在SQL管理库中的计划信息来解释和显示计划。 在此示例中,DISPLAY_SQL_PLAN_BASELINE函数显示句柄SYS_SQL_209d10fabbedc741指定的SQL语句的执行计划:

您还可以直接在DBA_SQL_PLAN_BASELINES视图上使用SELECT语句显示SQL计划基准信息,如以下示例所示:

SELECT SQL_HANDLE, PLAN_NAME, ENABLED, ACCEPTED, FIXED

FROM DBA_SQL_PLAN_BASELINES;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值