免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: eye_onme
打印 上一主题 下一主题

读写文件不是效率很低的嘛,那么数据库为何效率高呢 [复制链接]

论坛徽章:
0
71 [报告]
发表于 2005-04-20 12:34 |只看该作者

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

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

论坛徽章:
0
72 [报告]
发表于 2005-04-20 13:19 |只看该作者

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

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

论坛徽章:
0
73 [报告]
发表于 2005-04-20 13:32 |只看该作者

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

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

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

论坛徽章:
0
74 [报告]
发表于 2005-04-21 08:48 |只看该作者

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

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

论坛徽章:
0
75 [报告]
发表于 2005-04-21 09:40 |只看该作者

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

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

论坛徽章:
0
76 [报告]
发表于 2005-04-21 09:44 |只看该作者

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

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

论坛徽章:
0
77 [报告]
发表于 2005-04-21 09:55 |只看该作者

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

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

论坛徽章:
0
78 [报告]
发表于 2005-04-21 10:20 |只看该作者

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

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

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

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

论坛徽章:
0
79 [报告]
发表于 2005-04-21 11:00 |只看该作者

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

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

论坛徽章:
0
80 [报告]
发表于 2005-04-21 11:46 |只看该作者

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

你看我给的那个ORACLE连接,在LINUX上使用RAW是最慢的,使用EXT3是效率最高的.
ORACLE研制了自己的CLUSTER_FS,是为CLUSTER使用的.
我是说,给出例子和使用证据,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP