Oracle性能诊断艺术-读书笔记(范围分区)
2017-06-17 20:51
316 查看
1. PARTITION RANGE SINGLE
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/fd3fa333f5871670c17be00876393b3b.png)
注意:操作2 中的 TABLE ACCESS FULL 并不是全表扫描,只是对分区1 做 全分区扫描
case2
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/8b09fdac8b928f27eb9a8c7e31a89e4f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/ef4132cf2337134804fad4bf067201ac.png)
2. 分区范围迭代(PARTITION RANGE ITERATOR)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/900c415abc6222af2fda9df7bc4ab9e9.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/8ad5c95fccbf1adbcc664db26eb0c288.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/ce4b2c85a8f273fc3f207b702a703ae2.png)
3. 分区范围内联(PARTITION RANGE LIST)
如果限制是基于一个或多个IN条件,组成一个或多个元素,则执行计划中将出现一个特定的操作 PARTITION RANGE INLIST.用这个操作pstart、pstop不能给出哪个分区被访问的精确信息,而是显示为KEY(I)。表明分区裁剪分别针对IN条件中的每个值进行。再者,列starts表示有多少分区被访问
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/90acb5d67cea40c05f4a2e96734183d1.png)
4. 所有分区范围(PARTITION RANGE ALL)
分区键没有限制,则会访问所有分区。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/e25f42241f5ab141139cf3303d2dab26.png)
5. PARTITION RANGE EMPTY
查询优化器识别出没有分区存储相关数据的时候,它会显示在执行计划中
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/0ce1ecf184ba23eb9c1814378596e16c.png)
6. PARTITION RANGE OR
where子句中的多个谓词如果包含OR条件将导致全表扫描
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/b7750df21bda7e2f4f83d7306195fb48.png)
7. PARTITION RANGE SUBQUERY
第一个策略 是 规避分区裁剪
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/7844a19564d23f9945854439e6175745.png)
第二个策略 用nested loop 操作执行连接,并且定义应该发生在分区裁剪的表作为第二个自操作
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/f831f7b85c9d68073acc1a1632b7efaa.png)
第三种策略
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/d672fe1a5d193476570d3c90a39ea89f.png)
8. PARTITION RANGE JOIN-FILTER
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/f0c6545203fba6f791647746ab39993a.png)
执行计划按如下顺序执行。
1. 操作3和4通过索引tx_pk访问表tx
2. 基于操作3返回的数据,操作2基于列tx.d1 和 tx.n1的值创建了一个内存结构(bloom过滤)
3. 基于操作2创建的内存结构,操作5能够采用分区裁剪,因而,能够之访问包含相关数据的分区。
9. PARTITION RANGE MULTI-COLUMN操作
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/bd4c30b206e5a36cc37d9a1bc7dfc29f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/fd3fa333f5871670c17be00876393b3b.png)
注意:操作2 中的 TABLE ACCESS FULL 并不是全表扫描,只是对分区1 做 全分区扫描
case2
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/8b09fdac8b928f27eb9a8c7e31a89e4f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/ef4132cf2337134804fad4bf067201ac.png)
2. 分区范围迭代(PARTITION RANGE ITERATOR)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/900c415abc6222af2fda9df7bc4ab9e9.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/8ad5c95fccbf1adbcc664db26eb0c288.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/ce4b2c85a8f273fc3f207b702a703ae2.png)
3. 分区范围内联(PARTITION RANGE LIST)
如果限制是基于一个或多个IN条件,组成一个或多个元素,则执行计划中将出现一个特定的操作 PARTITION RANGE INLIST.用这个操作pstart、pstop不能给出哪个分区被访问的精确信息,而是显示为KEY(I)。表明分区裁剪分别针对IN条件中的每个值进行。再者,列starts表示有多少分区被访问
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/90acb5d67cea40c05f4a2e96734183d1.png)
4. 所有分区范围(PARTITION RANGE ALL)
分区键没有限制,则会访问所有分区。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/e25f42241f5ab141139cf3303d2dab26.png)
5. PARTITION RANGE EMPTY
查询优化器识别出没有分区存储相关数据的时候,它会显示在执行计划中
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/0ce1ecf184ba23eb9c1814378596e16c.png)
6. PARTITION RANGE OR
where子句中的多个谓词如果包含OR条件将导致全表扫描
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/b7750df21bda7e2f4f83d7306195fb48.png)
7. PARTITION RANGE SUBQUERY
第一个策略 是 规避分区裁剪
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/7844a19564d23f9945854439e6175745.png)
第二个策略 用nested loop 操作执行连接,并且定义应该发生在分区裁剪的表作为第二个自操作
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/f831f7b85c9d68073acc1a1632b7efaa.png)
第三种策略
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/d672fe1a5d193476570d3c90a39ea89f.png)
8. PARTITION RANGE JOIN-FILTER
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/f0c6545203fba6f791647746ab39993a.png)
执行计划按如下顺序执行。
1. 操作3和4通过索引tx_pk访问表tx
2. 基于操作3返回的数据,操作2基于列tx.d1 和 tx.n1的值创建了一个内存结构(bloom过滤)
3. 基于操作2创建的内存结构,操作5能够采用分区裁剪,因而,能够之访问包含相关数据的分区。
9. PARTITION RANGE MULTI-COLUMN操作
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/bd4c30b206e5a36cc37d9a1bc7dfc29f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/b02a6450425a851763857742896e3fdd.png)
相关文章推荐
- Oracle性能诊断艺术-读书笔记(执行计划中显示 Starts, E-Rows, REM A-Rows and A-Time)等)
- Oracle性能诊断艺术-读书笔记
- Oracle性能诊断艺术-读书笔记(脚本execution_plans截图)
- Oracle性能诊断艺术-读书笔记
- Oracle性能诊断艺术-读书笔记(脚本dbms_xplan_output截图-非常好的)
- 【Oracle性能诊断艺术】学习笔记----第二章:关键概念
- oracle性能诊断艺术-执行计划
- Oracle性能诊断艺术-相关脚本说明
- Oracle 性能诊断艺术 第四章 笔记
- Oracle性能诊断艺术(Oracle数据库优化的里程碑式著作)
- Oracle 9i 10g编程艺术 —— 读书笔记(二)
- 使用Oracle 10g中的等待界面诊断性能问题(查询会话等待,查询慢的现象)
- Oracle 9i&10g编程艺术 性能测试
- “实战式”拜读《Oracle 9i&10g 编程艺术》——分区
- oracle表范围分区的测试例子
- ORACLE性能诊断实例-行迁移和行链接
- 如何诊断Oracle Redo Log引发的性能问题
- Oracle性能诊断与调优
- [Oracle] SQL优化及性能诊断好帮手——SQL_TRACE
- Oracle 9i & 10g编程艺术-深入数据库体系结构——第13章:分区