参数调优为什么要采样_优化参数

跟其他段一样,它由若干个区(

extent

)组成(在本例中,是两个区)

,每个区由若干个块组成(在本例中,是

16

个块)

。第一

个区的第一个块为段头块(

segment header

)

。其中一些块(第

4

9

10

19

21

块)被缓存在高速缓存中。一个数据库进程对这个

段执行一次串行的全扫描(并行全扫描有其特殊的行为,将在后面介绍)

,并不能通过一次单独的物理读就完成。即使初始化参数

db_file_multiblock_read_count

的值被设置为

32

或者更大也不能。

如果初始化参数

db_file_multiblock_read_count

被设置为

8

,将会造成如下的物理读过程。

一个单块(

single-block

)读获取段头(块

1

)

一个多块(

multiblock

)读得到两个块(块

2

3

)

。不能一次读更多的块因为块

4

被缓存。

一个多块读读取

4

个块(从块

5

到块

8

)

。不能读更多的块因为块

9

被缓存。

一个多块读读取

6

个块(从块

11

到块

16

)

。不能读更多的块因为块

16

是一个区的最后一个块,不能跨区读。

一个多块读读取

2

个块(块

17

和块

18

)

。不能读更多的块因为块

19

被缓存。

一个单块读块取块

20

。不能读更多的块因为块

21

被缓存。

一个多块读读取

8

个块(从块

22

到块

29

)

。不能读更多的块因为初始化参数

db_file_multiblock_read_count

被设置为

8

一个多块读读取

3

个块(从块

30

到块

32

)

总之,这个进程共进行了两个单块读和六个多块读。平均每个多块读的块数约为

4

。平均每次读块的数目小于参数设置值

8

的事

实,解释了

Oracle

在计算系统统计信息时引入变量

mbrc

的原因。

在此,

了解查询优化器如何计算多块读的开销也是很重要的

(比如,

在全表扫描或快速全索引扫描时)

就像

Wolfgang Breitling

在他的文章“

A Look Under the Hood of CBO: The 10053 Event

”中指出的那样,当系统统计信息不可用时,这个开销可用下列公式

来近似地计算。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值