免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
141 [报告]
发表于 2008-07-25 12:42 |只看该作者
原帖由 zengit 于 2008-7-25 12:27 发表

raw I/O又是什么东东


直接读磁盘(没有经过中间缓冲机制),详见linux 的raw io 代码
当然这是逻辑说法上的,实际上缓冲无处不在,只是缓冲的层面和定位不同而已.

论坛徽章:
0
142 [报告]
发表于 2008-10-08 12:07 |只看该作者
好贴留名!

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
143 [报告]
发表于 2015-08-01 21:27 |只看该作者
本帖最后由 yulihua49 于 2015-08-01 21:28 编辑
haiyan_qi 发表于 2007-11-10 22:10
很多人都没自己建过裸设备就在这儿乱说,裸设备对于操作系统的文件系统来讲是不可见的,
操作系统可以看到 ...

裸设备可以read/write啊,它本身就是一个文件啊,在UNIX中,一切皆文件,都可以R/W的。
/dev/rdisk/rxxxxx的文件名啊,fdisk产生的。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
144 [报告]
发表于 2015-08-01 21:30 |只看该作者
wsw1wsw2 发表于 2008-05-08 12:55
kidding me?
虽然不懂DB,但是有个疑问,比如在Linux上用个“绕过文件系统直接和驱动层打交道” 的DB,那 ...

单独给个rdisk,就是non block的。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
145 [报告]
发表于 2015-08-01 21:32 |只看该作者
本帖最后由 yulihua49 于 2015-08-01 22:10 编辑
Edengundam 发表于 2007-01-30 08:46
数据库要维护自己的buffer. 字典表会一直保存在数据库维护的buffer, 还有表的索引. 数据的缓存策略数 ...

如果考虑很多用户同时访问,文件系统就惨了,锁疯掉了。
而数据库呢?他的buffer是公共的,在内存加锁,电梯算法(电梯跑一趟就为很多客户完成IO),一次IO就为很多用户准备数据,这是我们自己管理文件做不到的。
OS的文件buffer是每次IO为一个用户服务,这是跟DB的buffer完全不同的。

所以DB有个聚束的问题,即很多用户访问同一块数据,一次IO搞定。文件系统?没辙,不仅不能共享IO,还要等锁。

前边有个兄弟谈到在相同条件下比较文件和DB的性能,这是没有意义的。二者使用场景根本不同,应该按照各自的特长使用之。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
146 [报告]
发表于 2015-08-02 07:50 |只看该作者
本帖最后由 yulihua49 于 2015-08-02 08:02 编辑
北京野狼 发表于 2005-04-11 19:52
第一次听说数据库比文件系统效率高。

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

使用正确的方法,二者不会相差那么多。
我们采用的方法:对于一个SQL语句,比方说insert,先打开一个游标。这相当于打开文件的开销。
然后,循环执行:批量绑定变量--执行游标。最后关闭游标。这个过程,在相同的介质上与文件读写的性能是相当的。

数据库的表通常是有主键的,为了对等,文件也应该加索引文件,这等于是写两个文件。速度就不一定追得上DB了。

论坛徽章:
3
寅虎
日期:2013-11-27 07:53:29申猴
日期:2014-09-12 09:24:152015年迎新春徽章
日期:2015-03-04 09:48:31
147 [报告]
发表于 2015-08-02 10:56 |只看该作者
我感觉数据库效率不高

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
148 [报告]
发表于 2015-08-02 11:48 |只看该作者
Sevk 发表于 2015-08-02 10:56
我感觉数据库效率不高

可能是你使用技巧的问题。应该是二者效率差不多的。

论坛徽章:
2
15-16赛季CBA联赛之天津
日期:2016-12-20 17:56:18CU十四周年纪念徽章
日期:2017-04-20 16:30:16
149 [报告]
发表于 2017-01-22 17:59 |只看该作者
回复 146# Sevk

我也觉得,如果数据库读写效率比简单的read/write高的话,网站的视频、音频文件有什么理由不放数据库?大型网站磁盘I/O压力可是很大的,况且这些文件很大,索引根本占不了多少空间。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
150 [报告]
发表于 2017-01-24 11:01 |只看该作者
lhd666 发表于 2017-01-22 17:59
回复 146# Sevk

我也觉得,如果数据库读写效率比简单的read/write高的话,网站的视频、音频文件有什么 ...

数据库读写毕竟要在网络共享盘上操作,网络效率总归比本地效率低。那些静态数据本地存储就行了,无需数据库。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP