Oracle执行计划简介:优化数据库查询的关键
什么是执行计划
执行计划是Oracle数据库根据查询语句、表、索引和统计信息等生成的一种执行路线图,它描述了数据库优化器在执行查询语句时的执行步骤和操作方式。执行计划包括了查询的访问方式、连接方式、操作顺序等关键信息。
组成
目标 SQL 的正文、sql_id 和执行计划对应的 plan_hash_value
执行计划主体,主要有内部执行步骤、执行顺序、谓词信息、列信息、Cardinality、Cost 等
- 执行计划的额外补充信息,是否动态采用(dynamic sampling)、是否 Cardinality Feedback、是否 SQL Profile
模块解读
主体 Header
- ID:序号
- Operation: 当前操作的内容
- Rows: 当前操作的 Cardinality,Oracle 估计当前操作的返回结果集。
- Cost:SQL 执行的代价
- Time:Oracle 估计当前操作的时间
Query Block Name
1 | Query Block Name / Object Alias (identified by operation id): --这部分显示的为查询块名和对象别名 |
Outline Data
1 | Outline Data --提纲部分,这部分将执行计划中的图形化方式以文本形式来呈现,即转换为提示符方式 |
Predicate Information
- Access
- 通过某种方式定位了需要的数据,然后读取出这些结果集,叫做 Access。
- 表示这个谓词条件的值将会影响数据的访问路劲(表还是索引)。
- Filter
- 把所有的数据都访问了,然后过滤掉不需要的数据,这种方式叫做 filter 。
- 表示谓词条件的值不会影响数据的访问路劲,只起过滤的作用。
Column Projection Information
1 | Column Projection Information (identified by operation id): --执行时每一步骤所返回的列,下面的不同步骤返回了不同的列 |
Note
动态采样(dynamic sampling)是 Oracle CBO 优化器的一种特性。如果相关数据表没有收集过统计量,又要使用 CBO 的机制,就会引起动态采样。
执行计划的选定依据
在选择执行计划时,数据库优化器会考虑以下几个关键依据:
- 统计信息:执行计划的选定依赖于表、索引和列的统计信息。这些统计信息包括表的行数、列的唯一值数目、索引的高度等。通过准确的统计信息,优化器能够评估不同执行计划的成本和效率,并选择最佳的执行路径。
- 查询语句和条件:执行计划的选定还考虑了查询语句和条件的影响。优化器会分析查询涉及的表、索引、连接方式以及查询条件的复杂性和选择性。根据这些因素,优化器会评估执行计划的成本和效率,以选择最佳的执行路径。
- 系统资源:执行计划的选定还会受到系统资源的限制和优化目标的影响。优化器会考虑系统可用的资源(例如CPU和内存)以及管理员设置的优化目标,以选择适当的执行计划,以平衡查询性能和系统负载。
执行计划在优化数据库查询性能中起着关键的作用。它能够帮助我们理解查询的执行过程、优化查询语句和提高数据库的响应速度。执行计划的选定依据主要包括统计信息、查询语句和条件,以及系统资源的限制和优化目标。通过深入理解和应用执行计划,我们能够更好地优化查询性能,提升数据库的整体效率。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 宸汐缘!
评论