32
9. 自自 SQL 自自

9. 自动 SQL 调整

  • Upload
    melita

  • View
    113

  • Download
    1

Embed Size (px)

DESCRIPTION

9. 自动 SQL 调整. 简介. 自动 SQL 调整解决方案 SQL Tuning Advisor 为应用程序调整提供综合、自动、具有成本效益的解决方案 减少 SQL 调整时间多达 80% 减少管理成本. 手动调整所面临的挑战. 需要以下几个领域的专业知识 SQL 优化: 调整执行计划 访问设计:提供快速数据访问 SQL 设计: 使用适当的 SQL 结构 耗费时间 每一个 SQL 语句与众不同 潜在大量语句需要调整 永无休止 SQL 负载不断增加 计划衰退. 手动调整示例. 手动调整 - PowerPoint PPT Presentation

Citation preview

Page 1: 9. 自动  SQL  调整

9. 自动 SQL 调整

Page 2: 9. 自动  SQL  调整

简介 自动 SQL 调整解决方案

SQL Tuning Advisor 为应用程序调整提供综合、自动、具有成本

效益的解决方案 减少 SQL 调整时间多达 80% 减少管理成本

Page 3: 9. 自动  SQL  调整

手动调整所面临的挑战

需要以下几个领域的专业知识– SQL 优化: 调整执行计划– 访问设计:提供快速数据访问– SQL 设计: 使用适当的 SQL 结构

耗费时间– 每一个 SQL 语句与众不同– 潜在大量语句需要调整

永无休止– SQL 负载不断增加– 计划衰退

Page 4: 9. 自动  SQL  调整

手动调整示例

手动调整1. 取得 Explain Plan 的结果2. 检查查询对象及其大小3. 检查 Explain Plan 的 统计数据并将其与 Execution Pl

an 的统计数据(存储在 V$SQL 视图)比较4. “识别问题,例如: first rows” 问题,因为尽管查询

了大量的历史数据,但仅显示最新的数据5. 联系应用程序供应商6. 为供应商生产测试用例7. 从供应商处获得代码适当被修改的修补程序8. 在下一个维护周期中安装该修补程序

Page 5: 9. 自动  SQL  调整

SQL Tuning Advisor 概述

如何调整我的 SQL 负载?

SQL Tuning Advisor

解决方案

CBO 组件

提供实施脚本

无需专家DBA

SQL

负载

Page 6: 9. 自动  SQL  调整

版权所有 (2005~2008)eygle

SQL Tuning Advisor

Page 7: 9. 自动  SQL  调整

自动 SQL 调整概述

增加丢失的索引

修改 SQL 结构

创建 SQL 配置文件

自动调整优化器

SQL 结构分析

访问路径分析

SQL 配置文件分析

统计数据分析 收集丢失或者陈旧的统计数据

DBA

SQL 调整建议

SQL Tuning Advisor

Page 8: 9. 自动  SQL  调整

自动调整优化器 (ATO)

它是在调整模式下运行的查询优化器– 使用相同的计划生成过程但是执行需要更多时间的额

外步骤 它执行验证步骤

– 验证统计数据和它自己的估计 使用动态取样和部分执行来验证

它执行试探性步骤– 试验可以极大提速的新索引的使用– 分析导致大量计划操作符的 SQL 结构

Page 9: 9. 自动  SQL  调整

统计数据分析

增加丢失的索引

修改 SQL 结构

创建 SQL 配置文件

自动调整优化器

SQL 结构分析

访问路径分析

SQL 配置文件分析

统计数据分析 收集丢失或者陈旧的统计数据

DBA

SQL调整建议

SQL Tuning Advisor

Page 10: 9. 自动  SQL  调整

统计数据分析 动机

– 统计数据是查询优化器进行优化所依赖的主要信息统计数据的可用性和准确性非常重要

在 Oracle10g 中,自动统计数据收集使统计数据保持最……新– 但是可能并未将其启用或正确配置!

ATO 验证它需要 / 使用的统计数据– 产生辅助信息以弥补丢失或陈旧的统计数据– 在适当的时候生成收集统计数据的建议

Page 11: 9. 自动  SQL  调整

SQL 配置文件分析

增加丢失的索引

修改 SQL 结构

创建 SQL 配置文件

自动调整优化器

SQL 结构分析

访问路径分析

SQL 配置文件分析

统计数据分析 收集丢失或者陈旧的统计数据

DBA

SQL调整建议

SQL Tuning Advisor

Page 12: 9. 自动  SQL  调整

SQL 配置文件分析过程

优化器(调整模式)

创建提交

SQL 配置文件分析

优化器(正常模式)

输出提交

SQL 配置

SQL TuningAdvisor

数据库用户优调的计划

……之后使用

Page 13: 9. 自动  SQL  调整

SQL 配置文件 包含 ATO 针对某条 SQL 语句收集的辅助信息

– 弥补丢失或陈旧的统计数据– 弥补优化器估计中的错误

发生估计错误的原因是数据不对称和数据相关性、复杂的过滤器和联接

不需要对 SQL 文本做任何更改– 最适用于打包的应用程序

持久可用– 即使历经数据库关闭或升级,仍然可用

Page 14: 9. 自动  SQL  调整

访问路径分析

增加丢失的索引

修改 SQL 结构

创建 SQL 配置文件

自动调整优化器

SQL 结构分析

访问路径分析

SQL 配置文件分析

统计数据分析 收集丢失或者陈旧的统计数据

DBA

SQL调整建议

SQL Tuning Advisor

Page 15: 9. 自动  SQL  调整

访问路径分析 动机

– 增加一个索引可能会极大提高 SQL 语句的性能 问题:丢失一个关键的访问路径

– 没有创建索引或者错误地删除了索引 ATO 探究新索引的使用

– 如果索引能较大地提高性能,则推荐采用– 还推荐运行 SQL Access Advisor 为整个工作负载进

行全面的索引分析 SQL Access Advisor 也使用此分析模式

Page 16: 9. 自动  SQL  调整

SQL 结构分析

增加丢失的索引

修改 SQL 结构

创建 SQL 配置文件

自动调整优化器

SQL 结构分析

访问路径分析

SQL 配置文件分析

统计数据分析 收集丢失或者陈旧的统计数据

DBA

SQL 调整建议

SQL Tuning Advisor

Page 17: 9. 自动  SQL  调整

SQL 结构分析 动机

– 帮助应用程序开发人员识别编写得不好的 SQL 语句– 建议调整 SQL 以提高效率

问题分类– 对 SQL 操作符的语义更改(例如:用 UNION ALL

代替 UNION ) 要看用户是否接受新结果

– “ 对索引的列的谓词的句法更改(例如:删除 列 = :bind” 中的类型不匹配)

– SQL 设计问题(例如,增加丢失的联接谓词以删除 大型 Cartesian 联接)

Page 18: 9. 自动  SQL  调整

SQL 调整使用情景

SQL 调整顾问

ADDM 高负载 SQL

游标缓存

AWR

SQL 调整集(STS)

用户定义

过滤器 / 级别

SQL 来源 手动选择

自动选择

AWR

Page 19: 9. 自动  SQL  调整

SQL 调整集 (STS)

动机– 使用户能够调整自定义的 SQL 语句集

Oracle10g 中用来捕获和管理 SQL 工作负载的新对象 与 SQL 语句一同存储:

– 执行环境:分析用户、绑定值等– 执行统计数据: 从缓冲器读取、 CPU 时间、所用时间、执行次数等

从任何 SQL 来源创建– 来源: AWR 、游标缓存、用户定义的 SQL 负载和其他 STS

Page 20: 9. 自动  SQL  调整

SQL Tuning Advisor 用户界面

GUI: 企业管理器 从以下 SQL 来源页面运行 SQL Tuning A

dvisor– ADDM Finding 页面,或者– Top SQL 页面,或者– SQL 调整集 (STS) 页面

查看 SQL 调整建议 实施 SQL 调整建议

命令行: DBMS_SQLTUNE 程序包

Page 21: 9. 自动  SQL  调整

SQL 来源: ADDM Finding

Page 22: 9. 自动  SQL  调整

SQL 来源: Top SQL

Page 23: 9. 自动  SQL  调整

SQL 来源: SQL 调整集

Page 24: 9. 自动  SQL  调整

SQL 调整选项

Page 25: 9. 自动  SQL  调整

企业管理器界面

从以下 SQL 页面运行 SQL Tuning Advisor – ADDM Finding 页面,或者– Top SQL 页面,或者– SQL 调整集 (STS) 页面

查看 SQL 调整建议 实施 SQL 调整建议

Page 26: 9. 自动  SQL  调整

SQL — 调整建议 概述

Page 27: 9. 自动  SQL  调整

SQL — 调整建议 详述

Page 28: 9. 自动  SQL  调整

企业管理器界面

从以下 SQL 页面运行 SQL Tuning Advisor– ADDM Finding 页面,或者– Top SQL 页面,或者– SQL 调整集 (STS) 页面

查看 SQL 调整建议 实施 SQL 调整建议

Page 29: 9. 自动  SQL  调整

实施建议

Page 30: 9. 自动  SQL  调整

实施建议

Page 31: 9. 自动  SQL  调整

自动与手动 SQL 调整手动调整

1. 取得 Explain Plan 的结果2. 检查查询对象及其大小3. 检查 Explain Plan 的统计数据并将其与 Execu

tion Plan 的统计数据(存储在 V$SQL 视图)比较

4. 识别问题,例如: “ first rows” 问题,因为尽管查询了大量的历史数据,但仅显示最新的数据

5. 联系应用程序供应商6. 为供应商生产测试用例7. 从供应商处获得代码适当被修改的修补程序8. 在下一个维护周期中安装该修补程序

自动调整1. 运行 SQL Tu

ning Advisor

2. 实施建议。

Page 32: 9. 自动  SQL  调整

结论 Oracle 10g 消灭了 DBA 所面临的最大的

一个挑战 — SQL 调整 提供有针对性、精确且自动的调整 使对打包的应用程序的综合调整成为可能 不再依赖熟练的性能专家 产生直接的 ROI

降低管理成本 减少系统停机时间 提高 DBA 生产力