免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: eye_onme

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

论坛徽章:
0
发表于 2005-04-11 12:10 |显示全部楼层

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

direct-io也用系统调用read, write吧。
哪个数据库不用系统调用读写文件,而自己读写磁盘? 请给出具体例子。

论坛徽章:
0
发表于 2005-04-11 12:55 |显示全部楼层

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

不是传统意义上的read/write了
没有了VFS维护的各种cache和buffer
即使没有ext3之类的日志文件系统
如果出现掉电数据也不会丢失

论坛徽章:
0
发表于 2005-04-11 12:59 |显示全部楼层

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

嗯,不经过陷入内核,数据在外设和用户空间之间直接传输。
组成原理忘了大半了,似乎跟DMA控制有关吧?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2005-04-11 13:38 |显示全部楼层

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

原帖由 "思一克" 发表:
direct-io也用系统调用read, write吧。
哪个数据库不用系统调用读写文件,而自己读写磁盘? 请给出具体例子。


你说的对,我理解错了。
不过具体的我也不懂,到底数据在数据库
和硬盘之间是怎么传输的。是使用DMA吗?

论坛徽章:
0
发表于 2005-04-11 13:50 |显示全部楼层

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

To lenovo,
我也不是很清楚,我也不熟悉DB。只是觉得不大相信和明白

论坛徽章:
0
发表于 2005-04-11 13:57 |显示全部楼层

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

牺牲空间换取时间呗。

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2005-04-11 19:52 |显示全部楼层

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

第一次听说数据库比文件系统效率高。

正常情况读写文件系统比数据库快一到两个数据级

论坛徽章:
0
发表于 2005-04-11 21:37 |显示全部楼层

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

数据库通过主要两种途径提高IO性能.
1.把IO动作尽可能的在自己的BUFFER里面实现,对于必须的物理IO操作,通过对要写入的数据的预先组织(预先读取,按物理顺序排队,分块写入,小数据量写入等操作实现,比如对P-LOG和LOGIAL LOG).
2.对于物理IO动作,db可以通过RAW/COOKED设备来实现,在RAW设备上操作的话,DB自己管理设备以及数据在RAW设备上的存储细节,也就是说DB对于实际的物理存储是了解的,比如说,有2块DEVICE,上面各自分别有2个RAW DEVICES,那么DB可以用2个THREAD在2个DEVICE上面同时动作,对于同一DEVICE上面的LOGICAL VOLUM,DB对数据的预先安排可以大大提高IO性能.而文件系统上的IO由于有DOUBLE-BUFFER,所以数据库所有对IO的优化基本上没作用(因为DB的BUFFER通常比os的io BUFFER大的多,当DB BUFFER对应的OS BUFFER映射失败的时候,IO就要通过物理IO来完成了,并且DB并不知道实际的IO操作在物理设备上的实现细节(比如文件系统在物理设备上的位置)).
3.所有物理的IO动作最后还是对应到了READ/WRITE操作,只不过在RAW方式下的READ/WRITE是对设备直接操作的,不需要借助于文件系统实现.

论坛徽章:
0
发表于 2005-04-11 22:46 |显示全部楼层

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

原帖由 "北京野狼" 发表:
第一次听说数据库比文件系统效率高。

正常情况读写文件系统比数据库快一到两个数据级


严重同意!

论坛徽章:
0
发表于 2005-04-11 23:56 |显示全部楼层

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

主要原因是CACHE, 有空档才读写 I / O, DIRECT I/O相信是避免其它不明因素影响读写的完整性.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP