Oracle 10R2 研究--db_file_multiblock_read_count对成本的影响
2008-10-14 19:57
531 查看
当研究oracle的查找方式中发现,在全表扫描和索引扫描时,会用到db_file_multiblock_read_count来一次读取多个IO。也看了一些关于db_file_multiblock_read_count的文章,为加深自己的理解,特做个试验研究。
以下是reference对它的解释:
参数类型: Integer
默认值: 这个值对应最大的I/O大小,但是它是平台依赖的。
修改方法:ALTER SESSION, ALTER SYSTEM
值范围:依赖于操作系统
这个参数的意思是,在Table scan中,一次连续读(sequential read)能获取的最大块数。当然这个值,不能超过操作系统和硬件的I/O极限。如果超过了,Oracle则会使用实际最大值。一般在OLTP系统中,这个值是4~16
执行语句:
select count(DISTINCT AMOR_VAL) from COST_LEDG_H
列AMOR_VAL没有建立任何索引,同时COST_LEDG_H有大约3百万行数据。
执行:
alter session set db_file_multiblock_read_count=4
统计结果:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 | 5352 (4)| 00:01:05
13784 consistent gets
执行:
alter session set db_file_multiblock_read_count=8;
统计结果:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 | 3914 (5)| 00:00:47
13784 consistent gets
执行
alter session set db_file_multiblock_read_count=16;
统计结果:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
| 0 | SELECT STATEMENT | | 1 | 2 | 3194 (6)| 00:00:39
13784 consistent gets
通过以上的例子发现,我们将 db_file_multiblock_read_count 改成4,8,16后,虽然查询的IO次数没变,但查询的时间从65s,47s,39s的减少,
效果显著,同时Cost也限制减少。
总结:较大的db_file_multiblock_read_count 可以获得较好的性能提升。
以下是reference对它的解释:
参数类型: Integer
默认值: 这个值对应最大的I/O大小,但是它是平台依赖的。
修改方法:ALTER SESSION, ALTER SYSTEM
值范围:依赖于操作系统
这个参数的意思是,在Table scan中,一次连续读(sequential read)能获取的最大块数。当然这个值,不能超过操作系统和硬件的I/O极限。如果超过了,Oracle则会使用实际最大值。一般在OLTP系统中,这个值是4~16
执行语句:
select count(DISTINCT AMOR_VAL) from COST_LEDG_H
列AMOR_VAL没有建立任何索引,同时COST_LEDG_H有大约3百万行数据。
执行:
alter session set db_file_multiblock_read_count=4
统计结果:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 | 5352 (4)| 00:01:05
13784 consistent gets
执行:
alter session set db_file_multiblock_read_count=8;
统计结果:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 | 3914 (5)| 00:00:47
13784 consistent gets
执行
alter session set db_file_multiblock_read_count=16;
统计结果:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
| 0 | SELECT STATEMENT | | 1 | 2 | 3194 (6)| 00:00:39
13784 consistent gets
通过以上的例子发现,我们将 db_file_multiblock_read_count 改成4,8,16后,虽然查询的IO次数没变,但查询的时间从65s,47s,39s的减少,
效果显著,同时Cost也限制减少。
总结:较大的db_file_multiblock_read_count 可以获得较好的性能提升。
相关文章推荐
- oracle中的db_file_multiblock_read_count参数
- 通过案例学调优之--Oracle参数(db_file_multiblock_read_count)
- Why Change the Oracle DB_FILE_MULTIBLOCK_READ_COUNT?
- 实验讲解DB_FILE_MULTIBLOCK_READ_COUNT对物理读和IO次数的影响
- oracle DB_FILE_MULTIBLOCK_READ_COUNT参数和区间尺寸的设置
- 使用 db_file_multiblock_read_count测试Oracle在不同系统中的IO能力
- db_file_multiblock_read_count and Oracle IO size
- oracle DB_FILE_MULTIBLOCK_READ_COUNT
- db_file_multiblock_read_count的研究
- oracle参数-db_file_multiblock_read_count
- 通过案例学调优之--Oracle参数(db_file_multiblock_read_count)
- 关于db_file_multiblock_read_count的物理读
- stripe /block size/db_file_multiblock_read_count
- 共享SQL区、私有SQL区与游标 (提到参数DB_FILE_MULTIBLOCK_READ_COUNT)
- 关于db_file_multiblock_read_count的物理读
- 测量一次I/0最多能读多少块 【验证db_file_multiblock_read_count的值】
- Oracle db_file_mulitblock_read_count参数
- Oracle 11g通过提高IO吞吐量(修改_db_file_optimizer_read_count)来优化全表扫描
- db_file_multiblock_read_count
- 关于参数db_file_multiblock_read_count与_db_file_optimizer_read_count