访问路径
访问路径指的就是通过哪种扫描方式获取数据,比如全表扫描,索引扫描,或者直接通
过
获取数据。想要成为
优化高手,就必须深入理解各种访问路径。本章将会
详细介绍常见的访问路径。
常见访问路径
表示全表扫描,一般情况下是多块读,
表名
别名
。
等待事件为
!"##$$"
。如果是并行全表扫描,等待事件为
%$!#&"#'
$"
。在
$"!(
中有个新特征,对一个大表进行全表扫描的时候,会将表直接读入
)
,绕过
*+$!"!'
,这个时候全表扫描的等待事件也是
%$!#&"#'$"
。一般
情况下,都会禁用该新特征。等待事件
%$!#&"#'$"
在开启了异步
% ,-" ./!'-%0
的情况下统计是不准确的。关于等待事件,本书不做讨论,那毕竟
超出了本书范围。
因为
%$!#&"#'$"
统计不准,所以在编写本书的时候禁用了
%$!#&"#'$"
:
1"#$ . #2 #3- $%"-%$!#-$"345" 6
. #2"#$
全表扫描究竟是怎么扫描数据的呢?回忆一下
$"!
的逻辑存储结构,
$"!
最小的
存储单位是块
0!,
,物理上连续的块组成了区
7#/#
,区又组成了段
(2/#
。
对于非分区表,如果表中没有
!00
字段,那么一个表就是一个段。全表扫描,其实
就是扫描表中所有格式化过区。因为区里面的数据块在物理上是连续的,所以全表扫描可
以多块读。全表扫描不能跨区扫描,因为区与区之间的块物理上不一定是连续的。对于分
区表,如果表中没有
!00
字段,一个分区就是一个段,分区表扫描方式与非分区表
扫描方式是一样的。
对一个非分区表进行并行扫描,其实就是同时扫描表中多个不同区
7#/#
,因为区与
区之间的块物理上不连续,所以不需要担心扫描到相同数据块。
评论