博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11g新特性automatic sql tuning advisor
阅读量:2446 次
发布时间:2019-05-10

本文共 2999 字,大约阅读时间需要 9 分钟。

何为自动sql tuning
优化器有两种工作模式:普通模式(normal mode)和调优模式(tuning mode),前者为默认行为,后者需要执行一系列额外工作检验普通模式下生成的执行计划是否最优;
调优模式的输出并非一个执行计划,而是一系列action,处于该模式下的优化器称为自动调优优化器(automatic tuning optimizer),其行为被称作自动sql调优(automatic sql tuning);
用户可以调用sql tuning advisor提供的dbms_sqltune包实现,其输入源包括sql id/sql text/cursor cache/AWR/sql tuning set;
11g将其封装成job自动运行,称为automatic sql tuning advisor;
其将AWR中的top sql作为输入源,对候选sql逐个调用sql tuning advisor,当accept_sql_profiles=true且其能明显改善当前sql时,会自动接受;
自动sql调优包含4种调优分析(tuning analysis)手段
统计信息分析(statistics analysis)
如果sql中的表或索引统计信息缺失或无效,自动调优优化器会输出如下两种信息
收集统计信息的建议; 
辅助统计信息,存储该信息的对象为sql profile;
sql profiling
profile不包含具体的执行计划,而是一系列sql辅助信息的集合,以供优化器产生更优执行计划;
可以在不改变sql text的前提下选择更优执行计划,比起hint/stored outline又不会为sql锁死一个sql plan,优化器可以选择其他更优的执行计划;
其输出为接受sql profile的建议,一旦接受该profile就存储于数据字典;
profile可分为多个category(默认null),每个会话可根据sqltun_category设置选择不同种类的profile
访问路径分析access path analysis
sql structure 分析
手工调用dbms_sqltune案例 参考 
下面简述一下automatic sql tuning advisor
其工作流程如下
De.ion of Figure 17-1 follows 
可手工激活或禁止
BEGIN
  DBMS_AUTO_TASK_ADMIN.ENABLE(
    client_name => 'sql tuning advisor', 
    peration => NULL, 
    window_name => NULL);
END;
/
BEGIN
  DBMS_AUTO_TASK_ADMIN.DISABLE(
    client_name => 'sql tuning advisor', 
    peration => NULL, 
    window_name => NULL);
END;
/
有一系列参数可供定制,比如是否自动接受profile
Parameter Description

ACCEPT_SQL_PROFILE

Specifies whether to accept SQL profiles automatically.

EXECUTION_DAYS_TO_EXPIRE

Specifies the number of days for which to save the task history in the advisor framework schema. By default, the task history is saved for 30 days before it expires.

MAX_SQL_PROFILES_PER_EXEC

Specifies the limit of SQL profiles that are accepted for each automatic SQL tuning task. Consider setting the limit of SQL profiles that are accepted for each automatic SQL tuning task based on the acceptable level of changes that can be made to the system on a daily basis.

MAX_AUTO_SQL_PROFILES

Specifies the limit of SQL profiles that are accepted in total.

BEGIN  DBMS_AUTO_SQLTUNE.SET_AUTO_TUNING_TASK_PARAMETER(    parameter => 'ACCEPT_SQL_PROFILES', value => 'TRUE');END;/
可通过DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK查看报告
VARIABLE my_rept CLOB;BEGIN  :my_rept :=DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK(    begin_exec   => NULL,    end_exec     => NULL,    type         => 'TEXT',    level        => 'TYPICAL',    section      => 'ALL',    object_id    => NULL,    result_limit => NULL);END;/
 
什么是SQL ProfileA collection of information that enables the query optimizer to create an optimal execution plan for a SQL statement.可以在不改变sql text的前提下选择更优执行计划,且相比hint/stored outline又不会冻结该计划,当优化器发现更优解时可重新选择;可以通过stage表传输到其他数据库
什么是SQL Tuning Set (STS)A database object that includes one or more SQL statements along with their execution statistics and execution context.当生产库遭遇poor sql时,可创建STS并传输到测试库(>=10gR2)进行调优,使用dbms_sqltune创建;使用CAPTURE_CURSOR_CACHE_SQLSET可定时捕获cursor cache中的所有工作负载,相比之下AWR只捕获top sql

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-759561/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15480802/viewspace-759561/

你可能感兴趣的文章
物联网细分行业_2020年全国互联网细分市场可靠性研究
查看>>
加拿大加密货币交易_加密货币交易-如何制定可持续战略
查看>>
pvs-stdio ue4_使用PVS-Studio检查电报开放网络
查看>>
寻找新
查看>>
PostgreSQL中的WAL:2.预写日志
查看>>
zephyr操作系统_检查Zephyr操作系统代码
查看>>
Node.js VS Python:哪个更好?
查看>>
notebooks_.NET Core与Jupyter Notebooks预览1
查看>>
pvs-stdio ue4_华为云:如今PVS-Studio多云
查看>>
vc编程查找计算机运行记录_如何查找计算机的正常运行时间和安装日期
查看>>
steam无法显示成人内容_如何在Steam上查看仅限成人游戏
查看>>
轻松将图像上传到Photobucket
查看>>
如何在iPhone或iPad上启用USB受限模式(适用于iOS 11.4.1)
查看>>
注意:浏览器崩溃的技术支持弹出窗口又回来了
查看>>
如何在Ubuntu 11.10中安装Classic Gnome桌面
查看>>
亚马逊echo中国使用_如何阻止您的Amazon Echo收听
查看>>
linkedin 分享_如何永远阻止LinkedIn的烦人电子邮件
查看>>
ipad和iphone适配_如何在iPhone和iPad上将链接,照片和媒体快速添加到Apple Notes
查看>>
开源星空照片_如何拍摄星空的好照片
查看>>
usb延长线线序_我应该使用哪种延长线?
查看>>