读写文件不是效率很低的嘛,那么数据库为何效率高呢
>;>;你的意思是不是说,文件系统的日志功能是不可靠的? 因为日志未必总是与磁盘上的保持同步。应该是你write成功了不见得就确实磁道记录了。 不是有个工具sync 30秒运行一次吗?
读写文件不是效率很低的嘛,那么数据库为何效率高呢
原帖由 "思一克"]还有两者读写文件都是在KENREL中执行的,但DIRECT/IO DIO是直接将数据搞到用户的BUFFER,而普通IO先搞到page buffer, 再COPY到用户buffer.旷若发懵啊。多谢多谢!!
前阵子看page buffer和io调度,头都大了,早问您就好了。。
读写文件不是效率很低的嘛,那么数据库为何效率高呢
To albcamus,你过奖了。我都是临时实验(学习)的。原来也不是知道多少
读写文件不是效率很低的嘛,那么数据库为何效率高呢
以 Oracle 为例1。读
使用数据库有时候比file 要慢
比如说第一次使用某个数据时,Oracle肯定会比直接读file慢
但是,如果第二次要用到这个数据,Oracle直接从mem里读取,这样就比file要快
2。写
Oracle对data update / insert 的确是可以延迟写到磁盘的
它是先在mem里作修改,再由专门的dbwr 来写数据到磁盘。
3。个人认为,数据库和文件并不存在可比性
用文件,很难实现sql语句。
但是,使用数据库会耗用更多的系统资源。
读写文件不是效率很低的嘛,那么数据库为何效率高呢
原帖由 "rollingpig" 发表:以 Oracle 为例
1。读
使用数据库有时候比file 要慢
比如说第一次使用某个数据时,Oracle肯定会比直接读file慢
但是,如果第二次要用到这个数据,Oracle直接从mem里读取,这样就比file要快
2。写
Oracle对data..........
无论第几次读写,数据库都无法和文件系统的速度比较。
在普通的PC机器上,各自只有一行记录比较。如果是mysql会比文件系统慢30到50倍
要是采用oracle就更慢,至少差别70,80倍
读写文件不是效率很低的嘛,那么数据库为何效率高呢
文件系统总是比较快的。不用一再强调数据库的Cache,文件操作时OS也使用了Cache机制,在回忆回忆Unix原理课本中的内容?。读写文件不是效率很低的嘛,那么数据库为何效率高呢
都是从那里得出的数据库直接读写慢的结论?如果是有数量级的差别的话,数据库厂家早就倒闭了.
还30~40,70~80的数量级差别呢.
单纯一条记录如果有这么大的差别的话,只能说明数据库的应用设计有问题.文件系统的DATA BUFFER肯定没有DATABASE的效率高,文件系统的PAGE BUFFER在DATABSE也有实现,并且比文件系统的PAGE BUFFER优化了很多,比如DATABASE采用了并发物理IO的算法,在文件系统里面是没有的.数据库系统的物理IO的排队机制是自身实现的,在调用DRIVER读写的时候,效率要比PAGE BUFFER的高(DATABASE参与的工作单位多,而PAGE BUFFER只有一个工作单位).
DATABASE比文件系统消耗资源多,但是能处理的数据能力是文件系统不能比拟的?DATABASE可以实现T级数据量的ONLINE并发访问,文件系统也能?
DATABASE对实际物理设备的可并发操作性有要求,那是因为他自身的机制比文件系统复杂,也就是说,在单一一块设备上的DATABASE没有优势,但是如果设计的合理的话,DATABASE的性能和文件系统不在一个档次上.(比如一个TABLE可以设计成跨越多个DEVICE,并且应用的设计者有效的使用了DATABASE的优化机制的话,那么不管如何读写,DATABASE的效率都要比文件系统高).但是,你不能拿DATABASE的顺序读写和文件系统按位置读写的比较,因为这是数据库应用系统设计者的问题,不是数据库本身的问题.
读写文件不是效率很低的嘛,那么数据库为何效率高呢
就随机数据的突发读取而言,肯定是数据库慢。但问题是简单的文件访问的话,你能在数百G数据中迅速找到你要的数据吗?你能迅速地删除数据吗?你能有效处理尺寸跨度极大的变长数据吗?你能实现并发版本控制吗?......
当你的程序实现了这些的时候,你随机数据读取的效率恐怕还不如现在这些成熟的数据库呢。
读写文件不是效率很低的嘛,那么数据库为何效率高呢
原帖由 "柳五随风" 发表:都是从那里得出的数据库直接读写慢的结论?
如果是有数量级的差别的话,数据库厂家早就倒闭了.
还30~40,70~80的数量级差别呢.
单纯一条记录如果有这么大的差别的话,只能说明数据库的应用设计有问题.文件系统的DATA..........
你应该做过实验再发表评论.写个程序读写数据库和文件个10万次。
必定是几十倍甚至百倍的差别.
记住各自只有一行记录比较,不需要检索,和数据库的应用设计毫无关系.即便大量数据检索,数据库没有索引效率也高不到那里去.
你列出那些资料可能都毫无意义,数据库的查询,大量并发的时候可能最浪费时间的是connect和close,数据库的优势是体现的大量数据的查询、统计以及并发读写,不是在速度上.
读写文件不是效率很低的嘛,那么数据库为何效率高呢
原帖由 "北京野狼" 发表:你应该做过实验再发表评论.写个程序读写数据库和文件个10万次。
必定是几十倍甚至百倍的差别.
记住各自只有一行记录比较,不需要检索,和数据库的应用设计毫无关系.即便大量数据检索,数据库没有索引效率也?.........
个人比较赞同这个观点。。。