一个关于存储的问题

[复制链接]
查看11 | 回复8 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
在一个单独的硬盘上面cp 大的文件,经过iostata 测试发现写的速度可以达到50M/s
但是在上面放oracle 的日志文件或者数据文件然后大量insert 数据,发现只有2M/s 左右
弄不清楚为什么差别会这么大?偶对存储机制不明白,那位大虾给解释一下原理


回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
这个不好说:索引,表的assm属性,表空间的LMT属性等都会造成延误,
如何定量分析这些因素造成的影响,恐怕只有硬件产商才能做到。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
在operating system 下cp 文件没有其他因素的影响,是不是直接copy 文件块
但是在oracle db 下面是不是有很多其他的因素呢?
比如对于table 来说,存在一个随机读写的问题,对于日志来说存在顺序读写的问题
还有oracle 是以db_block_size 的大小来进行IO 单位的,不知道这些是不是限制呢?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
最初由 ZALBB 发布
[B]这个不好说:索引,表的assm属性,表空间的LMT属性等都会造成延误,
如何定量分析这些因素造成的影响,恐怕只有硬件产商才能做到。 [/B]

在oracle 里面测试比较的简单的,就是简单的表的批量insert ,表没有索引,而且表的空间也是预先分配好的.至于表存储上面的延误应该影响是比较小的
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
下载一个tiobench或者orion 测试一下磁盘的随机读写与顺序读写的差别..
还有如果数据库使用的是raw 设备, 需要使用执行raw社别的时候上面的测试效果..
数据的读写与block size关系很大..
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
最初由 jametong 发布
[B]下载一个tiobench或者orion 测试一下磁盘的随机读写与顺序读写的差别..
还有如果数据库使用的是raw 设备, 需要使用执行raw社别的时候上面的测试效果..
数据的读写与block size关系很大.. [/B]

随机读写的速度一般肯定比 顺序读写的速度慢,但是日志文件的写是顺序写的啊!怎么速度也是很慢呢,大概只有1.5M/S 左右
在OS 上面CP 和在oracle 读写的磁盘实现机制肯定不同,但是这个不同在那里呢?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
每次write调用的buffer 差别很大啊
可以考虑使用strace跟踪一下看看..
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
你还是先看看你的insert的那个进程的等待事件是什么吧
为什么一定能肯定是写慢呢?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
最初由 piner 发布
[B]你还是先看看你的insert的那个进程的等待事件是什么吧
为什么一定能肯定是写慢呢? [/B]

我把日志文件放到磁盘阵列上面,日志的写应该不会产生等待,磁盘阵列上面日志的写达到15M/s ,但是本地硬盘insert 数据一般就达到1.5M/s 左右,但是直接在OS 上面c在本地硬盘CP 文件就很快,一般达到40M/S 左右
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行