Chinaunix首页 | 论坛 | 博客
  • 博客访问: 98430
  • 博文数量: 36
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 375
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-25 13:47
个人简介

EnjoyIt

文章分类

全部博文(36)

文章存档

2014年(3)

2009年(1)

2008年(32)

我的朋友

分类: Oracle

2008-02-28 09:07:13

db_file_multiblock_read_count
 
Oracle在全表或全索引扫描时,一次读取的数据块的数目
 
目前操作系统一般支持512K到1M
 
缺省值一般比较小 (16或32)
还要受Oracle的限制,目前Oracle所支持的最大值为128.
 
增加这个参数可以减小IO调用的次数( 减小CPU开销 )
设置要受OS最大IO能力影响,也就是说,如果你系统的硬件IO能力有限,即使设置db_file_multiblock_read_count也是没有用的。
 
可以用 alter system 或alter session进行修改
 
增加这个值会使用 CBO偏向于使用全表扫描
 
Oracle一次IO能读取多少block还和很多因素有关,比如存储是否连续,磁盘是否经过条带等方式划分,并且Oracle的单次IO读取不能跨越Extent边界等.某些平台还和操作系统的参数设置有关.
 
在9i允许多个不同block大小的表空间上作测试,可以发现不同的表空间FTS时候读取的block数十不一样的,但是字节数总是一样。所以其实db_file_multiblock_read_count 并不是限定了FTS时读取的确切block数,而是限定了读取的字节数。
也就是如果system表空间的block size是8K,db_file_multiblock_read_count =16,那么其实是限定了一次读取8K*16=128K字节。
 
 
show parameter db_file_multiblock_read_count
alter session/sytem set db_file_multiblock_read_count=128;
 
最大db_file_multiblock_read_count和系统IO能力应该有如下关系:
      Max(db_file_multiblock_read_count) = MaxOsIOsize/db_block_size
阅读(1177) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~