Oracle 的优化程序包括哪几个部分
Oracle 的优化程序包含 4 大主要部分
SQL 语句转换:在查询优化中 Oracle 使用一系列精深技术对 SQL 语句进行转换。查询优化的这一步骤的目的是将原有的 SQL 语句转换成为语义相同而处理效率更高的 SQL 语句。
执行计划选择:对于每个 SQL 语句, 优化程序选择一个执行计划(可使用 Oracle 的EXPLAIN PLAN 工具或通过 Oracle 的 "v$sql_plan" 视图查看)。执行计划描述了执行SQL 时的所有步骤,如访问表的顺序;如何将这些表联接在一起;以及是否通过索引来访问这些表。优化程序为每个 SQL 语句设计许多可能的执行计划,并选出最好的一个。
开销模型与统计:Oracle 的优化程序依赖于执行 SQL 语句的所有单个操作的开销估算。想要优化程序能选出最好的执行计划,需要最好的开销估算方法。开销估算需要详细了解某些知识,这些知识包括:明白每个查询所需的 I/O、CPU 和内存资源以及数据库对象相关的统计信息(表、索引和物化视图),还有有关硬件服务器平台的性能信息。收集这些统计和性能信息的过程应高效并且高度自动化。
动态运行时间优化:并不是 SQL 执行的每个方面都可以事先进行优化。Oracle 因此要根据当前数据库负载对查询处理策略进行动态调整。该动态优化的目标是获得优化的执行性能,即使每个查询可能不能够获得理想的 CPU 或内存资源。Oracle 另有一个原来的优化程序,即基于规则的优化程序。该优化程序仅向后兼容,在 Oracle 的下个版本将不再得到支持。绝大多数 Oracle 用户目前使用基于开销的优化程序。所有主要的应用程序供应商(如 Oracle 应用程序、SAP 和 Peoplesoft,仅列出这几家)以及大量近来开发的客户应用程序都使用基于开销的优化程序来获得优良的执行性能。