zszyj 发表于 2008-02-06 19:39

原帖由 haiyan_qi 于 2007-11-10 22:10 发表 http://bbs.chinaunix.net/images/common/back.gif
很多人都没自己建过裸设备就在这儿乱说,裸设备对于操作系统的文件系统来讲是不可见的,
操作系统可以看到这个设备,但没有把这块设备用来存放文件,你想用操作系统的命令来在这个设备上建文件是不可能的。
有 ...
前面内容太多了, 没看全. 不过, 我看很多人都有误解.事实上:
1. 数据库使用裸设备, 其实也是通过read/write来做的, 只不过访问的对象不是文件系统,而是字符设备文件, 即/dev/rXXX之类的文件. read/write是系统调用, 访问字符设备时是直接无缓存的访问, 因此数据的更新会比文件系统及时(文件系统的文件读写都是缓存过的). 不过, 如果建库时不使用字符设备文件,而使用块设备文件,例如/dev/hd0b之类的文件,就会发现速度慢下来了,因为块设备是有读写缓存的. 是否直接访问设备,与read/write无关,其实是与设备自身的驱动程序有关.
2. 如果是遍历查找, 全记录更新,直接从后插入新记录,那么文件是要比数据库快上一个数量级的. 例如在INFORMIX/DB2/ORACLE等数据库上,每秒可以插入1万行记录的话,往文件系统中写同样的内容,可以达到10万行/秒以上, 这是早就测试过的. 但数据库的优势也很明显,按索引查找和更新速度快,删除记录或修改记录结构操作方便,容易实现关联查询和分组统计和聚集计算等,这才是数据库的强项.
3. 用文件还是用数据库,是根据应用的需求来看的,例如大机上一直就不使用数据库,而是使用通过COBOL程序访问ISAM或者VSAM文件,能管理的数据规模和处理速度都远高于数据库,但数据库的ACID特性尤其是事务的原子性,文件系统就很难保证了.

cheng_lai_shun 发表于 2008-02-13 11:39

陈年老贴,不错!

wsw1wsw2 发表于 2008-05-08 12:55

原帖由 albcamus 于 2005-4-11 09:56 发表 http://bbs.chinaunix.net/images/common/back.gif
我只知道大型数据库用raw IO,绕过文件系统直接和驱动层打交道,速度能提高不少。
kidding me?
虽然不懂DB,但是有个疑问,比如在Linux上用个“绕过文件系统直接和驱动层打交道” 的DB,那么就要给他个单独的block device?
不然的话这个DB肯定是要毁坏文件系统的啊。

hzcgz 发表于 2008-05-15 10:14

原帖由 思一克 于 2005-4-21 13:26 发表 http://bbs.chinaunix.net/images/common/back.gif
再给一个权威的TEST结果

http://www.oracle.com/technology/tech/linux/pdf/Linux-FS-Performance-Comparison.pdf

ORACLE的数据INPUT和OUTPUT
用ext3最快,ext2次之, 用RAWIO和OCFS(ORACLE自己的RAWFS ...

感觉应该用操作系统的文件, 但如果数据库也是用文件系统,那NAS 为何不能支持数据库? 不解!:em14:

coanne 发表于 2008-07-24 23:41

回复 #132 wsw1wsw2 的帖子

数据库安装的时候还是安装在文件系统上面的,只是数据库的用来存放数据的表空间是建立在裸设备上面的。然后由数据库来不经过文件系统的cache,直接读写裸设备上的数据。

system888net 发表于 2008-07-25 00:27

:) 讨论的不错.

system888net 发表于 2008-07-25 00:28

回复 #134 coanne 的帖子

不论是否缓冲,读写的动作还是要通过OS的.

[ 本帖最后由 system888net 于 2008-7-25 00:32 编辑 ]

虑而后能得 发表于 2008-07-25 08:54

direct I/O?
是不是相当于DMA啊

system888net 发表于 2008-07-25 12:22

原帖由 虑而后能得 于 2008-7-25 08:54 发表 http://bbs.chinaunix.net/images/common/back.gif
direct I/O?
是不是相当于DMA啊

这里说的direct I/O和DMA是不同的东西.

zengit 发表于 2008-07-25 12:27

原帖由 system888net 于 2008-7-25 12:22 发表 http://bbs.chinaunix.net/images/common/back.gif


这里说的direct I/O和DMA是不同的东西.
raw I/O又是什么东东
页: 4 5 6 7 8 9 10 11 12 13 [14] 15 16
查看完整版本: 读写文件不是效率很低的嘛,那么数据库为何效率高呢