SQL 监控与调优指南
1. 执行计划基础
执行计划是数据库管理员和开发人员用于提高 SQL 查询性能的实用工具。在执行计划中,每个 ID 都与一个操作相关联,对性能影响最大的两种操作类型是访问路径和连接方法。
1.1 访问路径
访问路径描述了如何从数据库中检索数据。常见的访问路径如下表所示:
| 访问路径 | 描述 |
| — | — |
| 全表扫描 | 读取表中的所有行,当需要读取表中大部分行时效率较高。当只需要读取表的小部分数据时,可以创建索引以避免全表扫描。 |
| Rowid 扫描 | 通过 ROWID 定位行。ROWID 包含数据文件和块内行的物理位置,当检索的行数相对较少时效率较高,当读取表的大部分数据时效率较低。 |
| 索引扫描 | 索引包含键值和 ROWID。如果查询只需要索引键值中包含的信息,Oracle 会返回这些值,否则它会使用 ROWID 从表行中检索额外的数据。 |
一般来说,当要检索表数据的一小部分时,应使用索引访问路径;当返回表的大部分数据时,全表扫描可能更合适。
1.2 连接方法
连接方法是优化器用于从多个表中检索数据的技术。连接语句源于 WHERE 子句中的表连接。优化器必须为每个连接语句计算以下内容:
- 每个表返回行的访问路径
- 连接方法
- 当连接涉及两个以上表时的连接顺序
常见的连接方法如下表所示:
| 连接方法 | 描述 |
| — | — |
| 嵌套循环 | 当连接小数据子集且对连接中的第二个表(内部)有唯一索引或高选择性索引访问