320 likes | 539 Views
9. 自动 SQL 调整. 简介. 自动 SQL 调整解决方案 SQL Tuning Advisor 为应用程序调整提供综合、自动、具有成本效益的解决方案 减少 SQL 调整时间多达 80% 减少管理成本. 手动调整所面临的挑战. 需要以下几个领域的专业知识 SQL 优化: 调整执行计划 访问设计:提供快速数据访问 SQL 设计: 使用适当的 SQL 结构 耗费时间 每一个 SQL 语句与众不同 潜在大量语句需要调整 永无休止 SQL 负载不断增加 计划衰退. 手动调整示例. 手动调整
E N D
9.自动 SQL 调整 版权所有(2005~2008)eygle
简介 • 自动 SQL 调整解决方案 • SQL Tuning Advisor • 为应用程序调整提供综合、自动、具有成本效益的解决方案 • 减少 SQL 调整时间多达 80% • 减少管理成本 版权所有(2005~2008) eygle
手动调整所面临的挑战 • 需要以下几个领域的专业知识 • SQL 优化: 调整执行计划 • 访问设计:提供快速数据访问 • SQL 设计: 使用适当的 SQL 结构 • 耗费时间 • 每一个 SQL 语句与众不同 • 潜在大量语句需要调整 • 永无休止 • SQL 负载不断增加 • 计划衰退 版权所有(2005~2008) eygle
手动调整示例 手动调整 取得 Explain Plan 的结果 检查查询对象及其大小 检查 Explain Plan 的统计数据并将其与 Execution Plan 的统计数据(存储在 V$SQL视图)比较 识别问题,例如: “first rows”问题,因为尽管查询了大量的历史数据,但仅显示最新的数据 联系应用程序供应商 为供应商生产测试用例 从供应商处获得代码适当被修改的修补程序 在下一个维护周期中安装该修补程序 版权所有(2005~2008) eygle
SQL Tuning Advisor 概述 解决方案 如何调整我的 SQL 负载? SQL Tuning Advisor CBO 组件 无需专家 DBA 提供实施脚本 SQL 负载 版权所有(2005~2008) eygle
SQL Tuning Advisor 版权所有(2005~2008)eygle
自动 SQL 调整概述 SQL 调整建议 自动调整优化器 SQL Tuning Advisor 收集丢失或者陈旧的统计数据 统计数据分析 SQL 配置文件分析 创建 SQL 配置文件 DBA 增加丢失的索引 访问路径分析 SQL 结构分析 修改 SQL 结构 版权所有(2005~2008) eygle
自动调整优化器 (ATO) • 它是在调整模式下运行的查询优化器 • 使用相同的计划生成过程但是执行需要更多时间的额外步骤 • 它执行验证步骤 • 验证统计数据和它自己的估计 • 使用动态取样和部分执行来验证 • 它执行试探性步骤 • 试验可以极大提速的新索引的使用 • 分析导致大量计划操作符的 SQL 结构 版权所有(2005~2008) eygle
统计数据分析 SQL调整建议 自动调整优化器 SQL Tuning Advisor 收集丢失或者陈旧的统计数据 统计数据分析 SQL 配置文件分析 创建 SQL 配置文件 DBA 增加丢失的索引 访问路径分析 SQL 结构分析 修改 SQL 结构 版权所有(2005~2008) eygle
统计数据分析 • 动机 • 统计数据是查询优化器进行优化所依赖的主要信息 • 统计数据的可用性和准确性非常重要 • 在 Oracle10g 中,自动统计数据收集使统计数据保持最新…… • 但是可能并未将其启用或正确配置! • ATO 验证它需要/使用的统计数据 • 产生辅助信息以弥补丢失或陈旧的统计数据 • 在适当的时候生成收集统计数据的建议 版权所有(2005~2008) eygle
SQL 配置文件分析 SQL调整建议 自动调整优化器 SQL Tuning Advisor 收集丢失或者陈旧的统计数据 统计数据分析 SQL 配置文件分析 创建 SQL 配置文件 DBA 增加丢失的索引 访问路径分析 SQL 结构分析 修改 SQL 结构 版权所有(2005~2008) eygle
SQL 配置文件分析过程 SQL 配置文件分析 提交 创建 优化器 (调整模式) SQL 配置 SQL TuningAdvisor 使用 之后…… 提交 输出 优化器 (正常模式) 优调的计划 数据库用户 版权所有(2005~2008) eygle
SQL 配置文件 • 包含 ATO 针对某条 SQL 语句收集的辅助信息 • 弥补丢失或陈旧的统计数据 • 弥补优化器估计中的错误 • 发生估计错误的原因是数据不对称和数据相关性、复杂的过滤器和联接 • 不需要对 SQL 文本做任何更改 • 最适用于打包的应用程序 • 持久可用 • 即使历经数据库关闭或升级,仍然可用 版权所有(2005~2008) eygle
访问路径分析 SQL调整建议 自动调整优化器 SQL Tuning Advisor 收集丢失或者陈旧的统计数据 统计数据分析 SQL 配置文件分析 创建 SQL 配置文件 DBA 增加丢失的索引 访问路径分析 SQL 结构分析 修改 SQL 结构 版权所有(2005~2008) eygle
访问路径分析 • 动机 • 增加一个索引可能会极大提高 SQL 语句的性能 • 问题:丢失一个关键的访问路径 • 没有创建索引或者错误地删除了索引 • ATO 探究新索引的使用 • 如果索引能较大地提高性能,则推荐采用 • 还推荐运行 SQL Access Advisor 为整个工作负载进行全面的索引分析 • SQL Access Advisor 也使用此分析模式 版权所有(2005~2008) eygle
SQL 结构分析 SQL 调整建议 自动调整优化器 SQL Tuning Advisor 收集丢失或者陈旧的统计数据 统计数据分析 SQL 配置文件分析 创建 SQL 配置文件 DBA 增加丢失的索引 访问路径分析 SQL 结构分析 修改 SQL 结构 版权所有(2005~2008) eygle
SQL 结构分析 • 动机 • 帮助应用程序开发人员识别编写得不好的 SQL 语句 • 建议调整 SQL 以提高效率 • 问题分类 • 对 SQL 操作符的语义更改(例如:用 UNION ALL 代替 UNION) • 要看用户是否接受新结果 • 对索引的列的谓词的句法更改(例如:删除“列 = :bind”中的类型不匹配) • SQL 设计问题(例如,增加丢失的联接谓词以删除大型 Cartesian 联接) 版权所有(2005~2008) eygle
SQL 调整使用情景 自动选择 AWR 高负载 SQL ADDM SQL 来源 手动选择 AWR SQL 调整 顾问 游标缓存 SQL 调整集(STS) 过滤器 / 级别 版权所有(2005~2008) eygle 用户定义
SQL 调整集 (STS) • 动机 • 使用户能够调整自定义的 SQL 语句集 • Oracle10g 中用来捕获和管理 SQL 工作负载的新对象 • 与 SQL 语句一同存储: • 执行环境:分析用户、绑定值等 • 执行统计数据: 从缓冲器读取、 CPU 时间、所用时间、执行次数等 • 从任何 SQL 来源创建 • 来源: AWR、 游标缓存、用户定义的 SQL 负载和其他 STS 版权所有(2005~2008) eygle
SQL Tuning Advisor 用户界面 • GUI: 企业管理器 • 从以下 SQL 来源页面运行 SQL Tuning Advisor • ADDM Finding 页面,或者 • Top SQL 页面,或者 • SQL 调整集 (STS) 页面 • 查看 SQL 调整建议 • 实施 SQL 调整建议 • 命令行: DBMS_SQLTUNE 程序包 版权所有(2005~2008) eygle
SQL 来源: ADDM Finding 版权所有(2005~2008) eygle
SQL 来源: Top SQL 版权所有(2005~2008) eygle
SQL 来源: SQL 调整集 版权所有(2005~2008) eygle
SQL 调整选项 版权所有(2005~2008) eygle
企业管理器界面 • 从以下 SQL 页面运行 SQL Tuning Advisor • ADDM Finding 页面,或者 • Top SQL 页面,或者 • SQL 调整集 (STS) 页面 • 查看 SQL 调整建议 • 实施 SQL 调整建议 版权所有(2005~2008) eygle
SQL 调整建议 — 概述 版权所有(2005~2008) eygle
SQL 调整建议 — 详述 版权所有(2005~2008) eygle
企业管理器界面 • 从以下 SQL 页面运行 SQL Tuning Advisor • ADDM Finding 页面,或者 • Top SQL 页面,或者 • SQL 调整集 (STS) 页面 • 查看 SQL 调整建议 • 实施 SQL 调整建议 版权所有(2005~2008) eygle
实施建议 版权所有(2005~2008) eygle
实施建议 版权所有(2005~2008) eygle
手动调整 取得 Explain Plan 的结果 检查查询对象及其大小 检查 Explain Plan 的统计数据并将其与 Execution Plan 的统计数据(存储在 V$SQL 视图)比较 识别问题,例如: “first rows”问题,因为尽管查询了大量的历史数据,但仅显示最新的数据 联系应用程序供应商 为供应商生产测试用例 从供应商处获得代码适当被修改的修补程序 在下一个维护周期中安装该修补程序 自动调整 运行 SQL Tuning Advisor 实施建议。 自动与手动 SQL 调整 版权所有(2005~2008) eygle
结论 • Oracle 10g 消灭了 DBA 所面临的最大的一个挑战— SQL 调整 • 提供有针对性、精确且自动的调整 • 使对打包的应用程序的综合调整成为可能 • 不再依赖熟练的性能专家 • 产生直接的 ROI • 降低管理成本 • 减少系统停机时间 • 提高 DBA 生产力 版权所有(2005~2008) eygle