hannibal 发表于 2005-04-20 12:34

读写文件不是效率很低的嘛,那么数据库为何效率高呢

这是要看数据量和应用而定的。
不能简单说数据库就比文件高效。
数据库的b-tree结构查询比文件方便,但是插入比文件低效。
fopen一个文件显然比连接一个数据库要高效的多。
cache可以提高速度,但是迟早是要写回disk的。
raw-io,现在很多文件系统非常高效,例如linux上的ext3的读写速度不亚于rawio. 裸设备比文件系统读写速度快很多倍的说法已经过时了。就算快,也就是个10%左右。

nhw_cs 发表于 2005-04-20 13:19

读写文件不是效率很低的嘛,那么数据库为何效率高呢

哎,"文件"与"数据库"根本就不是一个层次上的概念。数据库就是一个或若干个特殊格式的文件的集合。数据库的任何读取操作最终要转化为对文件的操作。数据库与文件的关系就象是mp3文件与文件的关系一样,也就是说,数据库也是文件!数据库文件由应用程序DBMS(相对OS而言,DBMS本质上就是一个普通的应用程序,尽管其大而复杂)识别和操作,MP3文件由MP3播放程序识别和操作,你自己定义的特定格式的文件由你自己编写的应用程序识别和操作!
也就是说,DBMS就相当于你自己编写的应用程序,DB就相当于你自己定义的特殊格式的文件或文件的集合. 不要跟我说数据库有什么cache啊等功能,说到底取决于DBMS这个应用程序想实现什么,我的意思是,DBMS能实现这些功能,我们自己的应用程序也能实现,因为大家都是应用程序! 虽然自己的程序实现DBMS所具有的功能不现实,我主要是想表明,数据库与文件根本就不是同一个层次的问题!不是同一层次的两种东西相互比较是不合逻辑的!

思一克 发表于 2005-04-20 13:32

读写文件不是效率很低的嘛,那么数据库为何效率高呢

是不是一个层次上的东西,但可以比较.尤其是有人需要存储某些文件时,是决定用DB存储,还是直接用OS文件?

就好像,fread()和read()不是一个层次上的函数,但人们还常常比较,因为有时要决定到底用哪一个.

crackpot 发表于 2005-04-21 08:48

读写文件不是效率很低的嘛,那么数据库为何效率高呢

个人理解:
数据库,像oracle,其实实现了一种自己的日志文件系统,他直接对硬盘进行block级操作,而不是一般的文件级,他自己分配和管理这些block,日志就是记录了对这些block的读写操作,同日志文件系统相似,只要日志不损坏,就可以做到备份数据和数据的恢复。而且他是用了很多buffer,专门为数据库的操作设置了许多buffer区。我理解中的数据库就是一个为检索,存储,管理专门做了很多工作的文件系统。

思一克 发表于 2005-04-21 09:40

读写文件不是效率很低的嘛,那么数据库为何效率高呢

我不知道ORACLE的配置。
请专家给出ORACLE直接读写硬盘BLOCK的具体情况。
我要看看是否真是如此。

eagerly1 发表于 2005-04-21 09:44

读写文件不是效率很低的嘛,那么数据库为何效率高呢

数据库的效率主要还是体现在空间冗余和数据检索上吧.至于I/O还没有看见哪个数据库把它体现在性能特点上.

narkissos 发表于 2005-04-21 09:55

读写文件不是效率很低的嘛,那么数据库为何效率高呢

bleem1998说的对,一些大型的数据库不使用OS的fs,而是自己的fs,同时对IO操作进行了cache、合并写入等优化措施,还通过进行查询优化减少IO访问。尽量提高访问效率。

思一克 发表于 2005-04-21 10:20

读写文件不是效率很低的嘛,那么数据库为何效率高呢

谁说大型DB用自己的fs? 举出例子。
看oracle是最好的大型DB吧。

看这个
http://www.oracle.com/technology/oramag/webcolumns/2002/techarticles/scalzo_linux02.html

如何是oracle运行的更有效率。
这里没说oracle有自己的fs

narkissos 发表于 2005-04-21 11:00

读写文件不是效率很低的嘛,那么数据库为何效率高呢

但是据我了解,确实是这样的啊……使用raw,自己去做……

思一克 发表于 2005-04-21 11:46

读写文件不是效率很低的嘛,那么数据库为何效率高呢

你看我给的那个ORACLE连接,在LINUX上使用RAW是最慢的,使用EXT3是效率最高的.
ORACLE研制了自己的CLUSTER_FS,是为CLUSTER使用的.
我是说,给出例子和使用证据,
页: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17
查看完整版本: 读写文件不是效率很低的嘛,那么数据库为何效率高呢