



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DB_FILE_MULTIBLOCK_READ_COUNT参数和区间尺寸的设置问题 2011-02-14 10:23我们知道Oracle通过两种方式从表中获取数据: 通过ROWID(通常使用索引扫描时) 通过全表扫描如果通过ROWID读取数据,表中的区间数就不是读性能的一个因素(如果使用并行查询,那么一个表中有较多的区间的数量可以明显提高I/O的性能),Oracle将通过ROWID直接找到需要的行,并获取相应数据。如果是全表扫描,那么区间的尺寸大小就有可能导致性能问题。因为全表扫描时,Oracle会一次读取多个Blocks。每次读取的块数将受初始化参数DB_FILE_MULTIBLOCK_READ_COUNT和操作系统的I/O缓冲区大小的限制。比如说,如果Oracle Block的大小是4KB,操作系统I/O缓冲区大小是64KB,那么在全表扫描时每次最多可以读取16各块(Oracle Blocks),所以此时将DB_FILE_MULTIBLOCK_READ_COUNT的值设置为超过16也改变不了全表扫描的性能了。通常,设置DB_FILE_MULTIBLOCK_READ_COUNT参数是如下考虑的:(1) 使用一个单独的数据文件创建一个新的表空间(2) 在该表空间中创建一个单独的未索引的表(3) 查询V$FILESTAT以验证该测试的初始统计值(4) 在表上执行全表扫描(5) 查询V$FILESTAT以确定该测试的终止统计值,并从中减去开始统计值。将PhyBlkRds值除以PhyRds以确定有效的多块读计数。(6) 删除这个用于测试的表空间C:sqlplus /as sysdbaSQL*Plus: Release 9.2.0.1.0 - Production on 星期六 6月 28 10:11:22 2003Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.已连接到空闲例程。SQL startupORACLE 例程已经启动。Total System Global Area 93395628 bytesFixed Size 453292 bytesVariable Size 67108864 bytesDatabase Buffers 25165824 bytesRedo Buffers 667648 bytes数据库装载完毕。数据库已经打开。SQL show parameter db_block_size;NAME TYPE VALUE- - -db_block_size integer 8192SQL show parameter DB_FILE_MULTIBLOCK_READ_COUNT;NAME TYPE VALUE- - -db_file_multiblock_read_count integer 16SQL使用一个单独的数据文件创建一个新的表空间:SQL create tablespace lunar2 datafile d:lunar.dbf size 10m3 default storage(initial 1m next 1m pctincrease 0);表空间已创建。在该表空间中创建一个单独的未索引的表:SQL create table lunar2 tablespace lunar3 as select * from dba_objects;表已创建。SQL select relative_fno from dba_data_files2 where tablespace_name=LUNAR;RELATIVE_FNO- 15查询V$FILESTAT以验证该测试的初始统计值:SQL select phyrds,phyblkrd from v$filestat2 where file#=15; PHYRDS PHYBLKRD- - 0 0在表上执行全表扫描:SQL select count(*) from lunar;COUNT(*)- 27547查询V$FILESTAT以确定该测试的终止统计值:SQL select phyrds,phyblkrd from v$filestat2 where file#=15; PHYRDS PHYBLKRD- - 24 376SQLPHYRDS 和 PHYBLKRD 的初始统计的值都是0;PHYRDS 和 PHYBLKRD 的终止统计的值分别是24和 376;PHYRDS 的终止统计的值 PHYRDS 的初始统计的值 24;PHYBLKRD 的终止统计的值 PHYBLKRD 的初始统计的值 376;PHYBLKRD 的差值 / PHYRDS 的差值 15.67所以,有效的多块读计数是16需要注意的是,如果不是用新的表空间测试,那么测试得到第3步和第5步的差值后,在会话级改变DB_FILE_MULTIBLOCK_READ_COUNT参数,然后再次得到第3步和第5步的差值,并重复测过程。记住,不要将DB_FILE_MULTIBLOCK_READ_COUNT参数设置的比计算的值高。设置区间尺寸大小的考虑思路应该是合理的利用Oracle的能力以便在全表扫描时执行多块存取,同时读操作又是不能跨区间的。举个例子,假设操作系统I/O缓冲区大小是64KB,考察读取一个640KB大小的表,如果设置为每个区间64KB,一共10个区间,如果执行全表扫描,则Oracle需要10次读操作(相当于一次读一个区间);如果设置为一个640KB的区间,则Oracle还是需要10次读操作(因为操作系统I/O缓冲区大小是64KB),可见压缩区间并不能提高性能;如果设置为每个区间80KB,一共8个区间,则每个区间Oracle需要读两次,第一次读64KB,第二次读这个区间剩余的16KB(读操作不能跨区间),所以总共需要16次读操作(相当于一次读一个区间)。区间尺寸的设置对性能的影响是显而易见的。 综上,总结起来设置区间大小时需要考虑下面的问题: 创建明显大于或者等于操作系统I/O缓冲区大小的区间(最好是操作系统I/O缓冲区大小的整数倍)。这样,如果区间非常大,即使区间大小不是操作系统I/O缓冲区大小的整倍数,也只需要很少的附加读操作(如果上面的640KB和80KB的差异)。 设置DB_FILE_MULTIBLOCK_READ_COUNT以充分利用操作系统I/O缓冲区的大小。应考虑DB_FILE_MULTIBLOCK_READ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年海南省琼海市辅警考试题库(附答案)
- 2025年学历类自考中国广告学-国际企业管理参考题库含答案解析(5套试卷)
- 2025年新能源物流车推广应用与充电站运营成本分析报告
- 重庆市江津区2024-2025学年八年级下学期期末道德与法治试题(A卷)(含答案)
- 某研究院2025年主要工作和亮点与成果总结
- 2026届陕西省延安市延川县中学化学高三第一学期期末经典试题含解析
- 2025年城市公共交通车辆借用与共享出行服务合同
- 2025年重型自卸车批量采购及全面维护保养服务合同
- 2025年新能源汽车车库租赁合同执行与纠纷预防管理
- 2025年跨境电商物流体系劳务分包合同标准文本
- 会计从业资格基础知识汇总
- 项目干系人管理评估
- 保险行业纳税筹划案例分析
- 私立民办高中学校项目建议书
- 比亚迪汽车发展史
- 茶与健康 第二讲 茶成分课件
- 手术部位标识
- 项目总结ppt范文
- 医院体检中心现状与五年发展规划
- 高中思想政治-人教版新教材必修1第四课第一框:中国特色社会主义进入新时代教学设计学情分析教材分析课后反思
- 不错!我真的很不错
评论
0/150
提交评论