本章介绍了哪些初始化参数会影响优化以及如何进行设置。
本节包含以下主题:
- 关于优化器初始化参数 : Oracle数据库提供了初始化参数来影响优化器行为的各个方面,包括光标共享,自适应优化和优化器模式。
- 启用优化功能 : 的
OPTIMIZER_FEATURES_ENABLE初始化参数(或提示)控制一组优化相关的功能,这取决于数据库版本。 - 选择一个优化目标 : 的优化目标是资源使用的优化器的优先级。
- 控制自适应优化 : 在Oracle数据库中,自适应查询优化是优化器根据运行时收集的统计信息调整执行计划的过程。
19.2.1关于优化器初始化参数
Oracle数据库提供了初始化参数来影响优化器行为的各个方面,包括游标共享,自适应优化和优化器模式。
下表列出了一些最重要的优化器参数。注意,该表不包括近似查询初始化参数,这些参数在“ 近似查询初始化参数 ”中进行了描述。
表19-2控制优化程序行为的初始化参数
| 初始化参数 | 描述 |
|---|---|
CURSOR_INVALIDATION | 提供DDL语句的默认游标无效级别。
您可以在 |
| 将SQL语句中的文字值转换为绑定变量。转换值可以改善游标共享,并且可以影响SQL语句的执行计划。优化器基于绑定变量的存在而不是实际文字值来生成执行计划。 设置为 |
| 指定在全表扫描或索引快速全扫描期间在单个I / O中读取的块数。优化器使用此参数的值来计算全表扫描和索引快速全扫描的成本。较大的值将导致全表扫描的成本降低,这可能会导致优化器选择全表扫描而不是索引扫描。 此参数的默认值对应于数据库可以有效执行的最大I / O大小。此值取决于平台,对于大多数平台为1 MB。由于参数以块表示,因此将其设置为等于可以有效执行的最大I / O大小除以标准块大小的值。如果会话数非常大,则多块读取计数值会减少,以避免缓冲区高速缓存中充满太多表扫描缓冲区。 |
| 控制自适应计划。适应性计划有其他选择。优化器根据查询执行时收集的统计信息在运行时决定计划。 默认情况下,此参数为
请参阅“ 关于自适应查询计划 ”。 |
| 控制自动重新优化和自适应计划的报告模式(请参阅“ 自适应查询计划 ”)。默认情况下,报告模式为关闭( 如果设置为 |
| 控制自适应统计。当查询谓词过于复杂而无法仅依赖基表统计信息时,优化器可以使用自适应统计信息。 默认情况下
请参阅“ 自适应统计 ”。 |
| 在数据库实例启动时设置优化器模式。可能的值是 |
| 通过嵌套循环控制索引探针的成本分析。值的范围 |
| 调整索引探针的成本。该值的范围是 |
| 此参数启用( |
| 启用或禁用不可见索引的使用。 |
| 启用或禁用优化器的查询重写功能。
|
| 确定强制执行查询重写的程度。 默认情况下,完整性级别设置为 要在约束处于 |
| 控制数据库是对所有查询使用SQL查询结果缓存,还是仅对使用结果缓存提示注释的查询使用SQL查询结果缓存。设置为 设置此参数时,请考虑结果缓存如何处理PL / SQL函数。数据库使用跟踪PL / SQL函数的数据依赖关系的相同机制使结果缓存中的查询结果无效,否则允许缓存包含PL / SQL函数的查询。由于PL / SQL函数结果缓存失效不会追踪各种依赖关系(如序列 |
| 更改分配给结果缓存的内存。如果将此参数设置为 |
| 指定任何单个结果可以使用的最大高速缓存内存。默认值为5%,但是您可以在 |
| 指定取决于远程数据库对象的结果保持有效的分钟数。默认值为 |
| 使优化器可以对星标查询(如果 |
也可以看看:
- Oracle数据库参考,以获取有关上述初始化参数的完整信息
- Oracle Database Performance Tuning Guide,了解如何调整查询结果缓存
- Oracle数据库数据仓库指南
了解有关星形转换和查询重写的更多信息 - Oracle Database In-Memory Guide,以了解有关数据库内存功能的更多信息




