Oracle 10R2 研究--db_file_multiblock_read_count对成本的影响
当研究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
执行:
--------------------------------------------------------------------------------
| 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
--------------------------------------------------------------------------------
| 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
| 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 研究
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具