关于db_block_size和os block size问题。

[复制链接]
查看11 | 回复9 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
oracle 对数据文件的操作是否要借助OS的IO系统?
对OS的知识了解太欠缺了,要尽快补上。
If your operating system reads the next block during sequential reads, and your
application performs many full table scans, the operating system I/O size should be
equal to or greater than the database block size.
这段不是恨明白。os 每次输入输出的时候是osblock size 的倍数 吗?难道这个倍数有时候甚至超过db_block_size(也是osblock size的倍数)呢?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
是否os 每次至少输入输出的单元是 os block size 大小。
在os 序列化读,并且你的应用程序在执行很多 全表扫描 时候,此时 os io 大小应该大于等于 db_block_size ?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
希望各位不吝赐教。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
Indeed it's confusing.

最初由 nattyneat 发布
[B]oracle 对数据文件的操作是否要借助OS的IO系统?
对OS的知识了解太欠缺了,要尽快补上。
If your operating system reads the next block during sequential reads,
[/B]

this "block" is io block, or fs block, or disk block,
or db block? my understanding is db block since
it also mentioned "sequential reads"

[B]
and your
application performs many full table scans, the operating system I/O size should be
equal to or greater than the database block size.
这段不是恨明白。os 每次输入输出的时候是osblock size 的倍数 吗?难道这个倍数有时候甚至超过db_block_size(也是osblock size的倍数)呢? [/B]


io blockis the mutiples of 512 bytes,
and could as high as 1MB, 4MB, or more.
and db block sizeis 8k, 16k .....
and usually io block size is multiple of that.
The tricky thing is how to find the default io block sizeof a device. If someone know, please share.
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
Oracle Turning 说这样判断OS 块大小(K):
select member,bytes*.9/(select log_file_size_redo_blksfrom v$instance_recovery)
from v$logfile a,v$log b
where a.GROUP#=b.GROUP#

MEMBER
os_block_size
-------------------- -------------
/u01/redo01.log
512
/u01/redo02.log
512
/u01/redo03.log
512
好象不严密。。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
上面是我的小型机(aix4.33)上的数据。
另一个Windows server上的:

MEMBER
os_block_size
-------------------- -------------
D:\DATA\REDO01A.LOG
512
E:\DATA\REDO01B.ORA
512
F:\DATA\REDO01C.ORA
512
D:\DATA\REDO02A.LOG
512
E:\DATA\REDO02B.ORA
512
F:\DATA\REDO02C.ORA
512
D:\DATA\REDO03A.LOG
512
E:\DATA\REDO03B.ORA
512
F:\DATA\REDO03C.ORA
512
我曾经试着加大操作系统块到2M,结果一样;加大回Redo文件大小到一倍,结果变成了1024。。。。纳闷。。。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
操作系统的块相对db_block来说一般都小很多,大多数默认是512,AIX如果你没改过应该也是这个,好像改的也不多
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 graysun 发布
[B]操作系统的块相对db_block来说一般都小很多,大多数默认是512,AIX如果你没改过应该也是这个,好像改的也不多 [/B]

所以,我估计log_file_size_redo_blks值是固定不变的,但文档中并没有讲清楚。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
I/O有个最大吞吐量,sequential reads是一个块一个块读,块的大小等于db_block_size,如果db_block_size大于I/O 最大吞吐量,那这个块要分几次读。FTS是scattered read,一次I/O size等于db_block_size*db_file_mutiblock_read_count<=I/O最大吞吐量
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 xinjingcool 发布
[B]I/O有个最大吞吐量,.... [/B]

right. but what we need to know the
currentio block size, which may be equal
to the maximum
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行