SQL计划管理可防止由于计划更改而导致性能下降。
第二个目标是通过仅验证和接受可提高性能的计划更改来适应新的优化程序统计信息或索引之类的更改。
注意:
当事件引起不可逆的执行计划更改(例如删除索引)时,SQL计划基准无济于事。
本节包含以下主题:
- SQL计划管理的好处 SQL计划管理可以改善或保留数据库升级以及系统和数据更改中的SQL性能。
- SQL计划基线和SQL概要文件之间的差异SQL概要 文件和SQL计划基线都通过确保优化器仅使用最佳计划来帮助提高SQL语句的性能。
27.2.1 SQL计划管理的好处
SQL计划管理可以改善或保留数据库升级以及系统和数据更改中的SQL性能。
具体而言,收益包括:
- 安装新的优化程序版本的数据库升级通常会导致一小部分SQL语句的计划更改。
大多数计划更改都会导致改进或没有性能更改。但是,某些计划更改可能会导致性能下降。SQL计划基准显着减少了升级导致的潜在回归。
升级时,数据库仅使用计划基准中的计划。数据库将不在当前基准中的新计划放入保留区域,然后评估它们,以确定它们使用的资源是否少于基准中当前计划。如果计划执行得更好,则数据库会将其提升为基准。否则,数据库不会升级它们。
- 正在进行的系统和数据更改可能会影响某些SQL语句的计划,从而可能导致性能下降。
SQL计划基准有助于最大程度地降低性能下降并稳定SQL性能。
- 新应用程序模块的部署将新的SQL语句引入数据库。
应用程序软件可以使用在标准测试配置中针对新语句开发的适当的SQL执行计划。如果系统配置与测试配置显着不同,则数据库可以随着时间的推移发展SQL计划基准,以产生更好的性能。
也可以看看:
《 Oracle数据库升级指南》以了解如何升级Oracle数据库
27.2.2 SQL计划基准和SQL概要文件之间的差异
SQL配置文件和SQL计划基线都可以通过确保优化器仅使用最佳计划来帮助提高SQL语句的性能。
配置文件和基线都在内部使用提示来实现。但是,这些机制具有重大差异,包括以下内容:
- 通常,SQL计划基线是主动的,而SQL概要文件是被动的。
通常,您会在出现重大性能问题之前创建SQL计划基准。SQL计划基准会阻止优化器将来使用次优计划。
调用SQL Tuning Advisor时,数据库将创建SQL配置文件,通常仅在 SQL语句显示高负荷症状之后才执行此操作。SQL概要文件主要用于提供持续解决导致次优计划的优化器错误的有用功能。由于SQL配置文件机制是反应性的,因此无法保证数据库发生剧烈变化时的稳定性能。
图27-1 SQL计划基准和SQL配置文件
- SQL计划基准可重现特定计划,而SQL概要文件可纠正优化器成本估算。
SQL计划基准是一组可接受的计划。每个计划都使用一组轮廓提示来实现,这些提示完全指定了特定计划。SQL概要文件也使用提示来实现,但是这些提示未指定任何特定的计划。而是,这些提示可以纠正优化程序估计中的错误计算,从而导致计划不理想。例如,提示可以纠正表的基数估计。
因为配置文件不会将优化程序限制在任何一个计划中,所以SQL配置文件比SQL计划基线更灵活。例如,初始化参数和优化器统计信息的更改使优化器可以选择更好的计划。
Oracle建议您使用SQL Tuning Advisor。这样,您可以遵循顾问针对SQL配置文件提出的建议并计划基准,而不是尝试确定哪种机制最适合每个SQL语句。
也可以看看:
- “ 关于优化程序提示 ”
- “ 管理SQL配置文件 ”
- “ 使用SQL Tuning Advisor分析SQL ”