SushilKumar产品管理总管数据库可管理性甲骨文公司自我管理的数据库:自动SQL调整议程简介手动调整所面临的挑战SQLTuningAdvisor与SQLAccessAdvisor概述SQLTuningAdvisor–自动SQL调整–使用情景–用户界面SQLAccessAdvisor–使用情景–用户界面结论简介自动SQL调整解决方案包括–SQLTuningAdvisor–SQLAccessAdvisor为应用程序调整提供综合、自动、具有成本效益的解决方案减少SQL调整时间多达80%减少管理成本手动调整所面临的挑战需要以下几个领域的专业知识–SQL优化:调整执行计划–访问设计:提供快速数据访问–SQL设计:使用适当的SQL结构耗费时间–每一个SQL语句与众不同–潜在大量语句需要调整永无休止–SQL负载不断增加–计划衰退手动调整示例打包应用程序的调整方案手动调整1.取得ExplainPlan的结果2.检查查询对象及其大小3.检查ExplainPlan的统计数据并将其与ExecutionPlan的统计数据(存储在V$SQL视图)比较4.识别问题,例如:“firstrows”问题,因为尽管查询了大量的历史数据,但仅显示最新的数据5.联系应用程序供应商6.为供应商生产测试用例7.从供应商处获得代码适当被修改的修补程序8.在下一个维护周期中安装该修补程序SQLTuningAdvisor与SQLAccessAdvisor概述如何调整我的SQL负载?SQLTuningAdvisor与SQLAccessAdvisor解决方案CBO组件提供实施脚本无需专家DBASQL负载SQLTuningAdvisorOracle10g使SQL调整过程自动化我可以代劳!SQLTuningAdvisorDBA高负载SQLADDMSQL负载自动SQL调整概述增加丢失的索引修改SQL结构创建SQL配置文件自动调整优化器SQL结构分析访问路径分析SQL配置文件分析统计数据分析收集丢失或者陈旧的统计数据DBASQL调整建议SQLTuningAdvisor自动调整优化器(ATO)它是在调整模式下运行的查询优化器–使用相同的计划生成过程但是执行需要更多时间的额外步骤它执行验证步骤–验证统计数据和它自己的估计使用动态取样和部分执行来验证它执行试探性步骤–试验可以极大提速的新索引的使用–分析导致大量计划操作符的SQL结构统计数据分析增加丢失的索引修改SQL结构创建SQL配置文件自动调整优化器SQL结构分析访问路径分析SQL配置文件分析统计数据分析收集丢失或者陈旧的统计数据DBASQL调整建议SQLTuningAdvisor统计数据分析动机–统计数据是查询优化器进行优化所依赖的主要信息统计数据的可用性和准确性非常重要在Oracle10g中,自动统计数据收集使统计数据保持最新……–但是可能并未将其启用或正确配置!ATO验证它需要/使用的统计数据–产生辅助信息以弥补丢失或陈旧的统计数据–在适当的时候生成收集统计数据的建议SQL配置文件分析增加丢失的索引修改SQL结构创建SQL配置文件自动调整优化器SQL结构分析访问路径分析SQL配置文件分析统计数据分析收集丢失或者陈旧的统计数据DBASQL调整建议SQLTuningAdvisorSQL配置文件分析动机–通过收集有关查询行为的更多信息使查询优化器能够发现更好的计划查询优化器有时间的限制–当寻找适当的计划时采取折衷允许ATO使用更多时间–使用这些时间收集有关SQL语句的自定义信息(称作SQL配置文件)–创建SQL配置文件,并将其推荐–一旦实施,SQL配置文件将由查询优化器用来生成一个优化的计划SQL配置文件分析过程优化器(调整模式)创建提交SQL配置文件分析优化器(正常模式)输出提交SQL配置SQLTuningAdvisor数据库用户优调的计划之后……SQL配置文件包含ATO针对某条SQL语句收集的辅助信息–自定义的优化器设置基于既往执行历史(例如,first_rows与all_rows)–弥补丢失或陈旧的统计数据–弥补优化器估计中的错误发生估计错误的原因是数据不对称和数据相关性、复杂的过滤器和联接不需要对SQL文本做任何更改–最适用于打包的应用程序持久可用–即使历经数据库关闭或升级,仍然可用访问路径分析增加丢失的索引修改SQL结构创建SQL配置文件自动调整优化器SQL结构分析访问路径分析SQL配置文件分析统计数据分析收集丢失或者陈旧的统计数据DBASQL调整建议SQLTuningAdvisor访问路径分析动机–增加一个索引可能会极大提高SQL语句的性能问题:丢失一个关键的访问路径–没有创建索引或者错误地删除了索引ATO探究新索引的使用–如果索引能较大地提高性能,则推荐采用–还推荐运行SQLAccessAdvisor为整个工作负载进行全面的索引分析SQLAccessAdvisor也使用此分析模式SQL结构分析增加丢失的索引修改SQL结构创建SQL配置文件自动调整优化器SQL结构分析访问路径分析SQL配置文件分析统计数据分析收集丢失或者陈旧的统计数据DBASQL调整建议SQLTuningAdvisorSQL结构分析动机–帮助应用程序开发人员识别编写得不好的SQL语句–建议调整SQL以提高效率问题分类–对SQL操作符的语义更改(例如:用UNIONALL代替UNION)要看用户是否接受新结果–对索引的列的谓词的句法更改(例如:删除“列=:bind”中的类型不匹配)–SQL设计问题(例如,增加丢失的联接谓词以删除大型Cartesian联接)SQL调整使用情景SQL调整顾问ADDM高负载SQL游标缓存AWRSQL调整集(STS)用户定义过滤器/级别SQL来源手动选择自动选择AWRSQL调整集(STS)动机–使用户能够调整自定义的SQL语句集Oracle10g中用来捕获和管理SQL工作负载的新对象与SQL语句一同存储:–执行环境:分析用户、绑定值等–执行统计数据:从缓冲器读取、CPU时间、所用时间、执行次数等从任何SQL来源创建–来源:AWR、游标缓存、用户定义的SQL负载和其他STSSQL调整集优点允许针对性的、根据需求的、自定义的SQL工作负载调整简化大量SQL语句的调整持久可用为处理SQL工作负载提供通用基础构架–可以用作不同的调整任务的来源SQLTuningAdvisor用户界面GUI:企业管理器从以下SQL来源页面运行SQLTuningAdvisor–ADDMFinding页面,或者–TopSQL页面,或者–SQL调整集(STS)页面查看SQL调整建议实施SQL调整建议命令行:DBMS_SQLTUNE程序包SQL来源:ADDMFindingSQL来源:TopSQLSQL来源:SQL调整集SQL调整选项企业管理器界面从以下SQL页面运行SQLTuningAdvisor–ADDMFinding页面,或者–TopSQL页面,或者–SQL调整集(STS)页面查看SQL调整建议实施SQL调整建议SQL调整建议—概述SQL调整建议—详述企业管理器界面从以下SQL页面运行SQLTuningAdvisor–ADDMFinding页面,或者–TopSQL页面,或者–SQL调整集(STS)页面查看SQL调整建议实施SQL调整建议实施建议实施建议DBMS_SQLTUNEPL/SQL程序包包括用于SQL调整的API–创建调整任务–执行调整任务–显示顾问建议–删除调整任务–创建STS–置入STS–查询STS内容–删除STS–接受SQL配置文件–删除SQL配置文件–更改SQL配置文件属性调整任务管理STS管理SQL配置文件管理自动与手动SQL调整手动调整1.取得ExplainPlan的结果2.检查查询对象及其大小3.检查ExplainPlan的统计数据并将其与ExecutionPlan的统计数据(存储在V$SQL视图)比较4.识别问题,例如:“firstrows”问题,因为尽管查询了大量的历史数据,但仅显示最新的数据5.联系应用程序供应商6.为供应商生产测试用例7.从供应商处获得代码适当被修改的修补程序8.在下一个维护周期中安装该修补程序自动调整1.运行SQLTuningAdvisor2.实施建议。SQLAccessAdvisorSQLAccessAdvisor工作负载索引物化视图物化视图日志SQLAccessAdvisorSQLAccessAdvisor特性使访问结构设计更加清晰,以优化应用程序性能建议创建和/或删除某些索引、物化视图和物化视图日志以提高性能分析整个负载而不仅仅是单独的SQL语句考虑新的访问结构对DML操作的影响考虑存储、创建和维护的成本SQLAccessAdvisor特性同时考虑–索引解决方案–物化视图解决方案–两者的结合优化物化视图以获得–最大化查询重写使用率–快速刷新为快速刷新推荐物化视图日志将类似索引合并到单一索引使用情景工作负载用户定义假设游标缓存过滤器选项STSSQLAccessAdvisor过滤器选项不必使用整个工作负载过滤选项–应用程序和模块名称–SQL语句数–在一个特定的时间窗口内的查询–用户名–表必须在该列表中不在该列表中SQLAccessAdvisor用户界面GUI:企业管理器–从AdvisorCentral运行SQLAccessAdvisor–选择工作负载来源–设置选项工作负载建议高级–排定作业–复查作业并提交–监视作业–查看建议–实施建议命令行:DBMS_ADVISOR程序包启动SQLAccessAdvisor选择工作负载来源设置工作负载选项设置建议选项高级选项高级调整选项将根据SQL语句使用的资源来调整SQL语句规划作业复查并提交监视作业查看建议实施建议自动SQL调整总结分析类执行者统计数据SQLTuningAdvisorSQL配置文件SQLTuningAdvisorSQL结构SQLTuningAdvisor访问路径:索引SQLTuning/AccessAdvisor访问路径:物化视图SQLAccessAdvisor访问路径:物化视图日志SQLAccessAdvisorSQLTuningAdvisor和SQLAccessAdvisor联手使SQL调整完全自动化接下来,您可以……参观相关演示和/或实践实验室–在产品展示区参观可管理性展位,以观看正在进行的自动SQL调整。我们的软件如何服务于您的企业–请垂询Oracle产品演示区的Oracle主管人员,获取个性化的建议有关Oracle10g数据库可管理性解决方案的综合技术信息,请访问:–otn.oracle.com/products/manageability/database/index.html结论Oracle10g消灭了DBA所面临的最大的一个挑战—SQL调整提供有针对性、精确且自动的调整使对打包的应用程序的综合调整成为可能不再依赖熟练的性能专家产生直接的ROI–降低管理成本–减少系统停机时间–提高DBA生产力问答