读写文件不是效率很低的嘛,那么数据库为何效率高呢
direct-io也用系统调用read, write吧。哪个数据库不用系统调用读写文件,而自己读写磁盘? 请给出具体例子。
读写文件不是效率很低的嘛,那么数据库为何效率高呢
不是传统意义上的read/write了没有了VFS维护的各种cache和buffer
即使没有ext3之类的日志文件系统
如果出现掉电数据也不会丢失
读写文件不是效率很低的嘛,那么数据库为何效率高呢
嗯,不经过陷入内核,数据在外设和用户空间之间直接传输。组成原理忘了大半了,似乎跟DMA控制有关吧?
读写文件不是效率很低的嘛,那么数据库为何效率高呢
原帖由 "思一克" 发表:direct-io也用系统调用read, write吧。
哪个数据库不用系统调用读写文件,而自己读写磁盘? 请给出具体例子。
你说的对,我理解错了。 :oops:
不过具体的我也不懂,到底数据在数据库
和硬盘之间是怎么传输的。是使用DMA吗?
读写文件不是效率很低的嘛,那么数据库为何效率高呢
To lenovo,我也不是很清楚,我也不熟悉DB。只是觉得不大相信和明白
读写文件不是效率很低的嘛,那么数据库为何效率高呢
牺牲空间换取时间呗。读写文件不是效率很低的嘛,那么数据库为何效率高呢
第一次听说数据库比文件系统效率高。正常情况读写文件系统比数据库快一到两个数据级
读写文件不是效率很低的嘛,那么数据库为何效率高呢
数据库通过主要两种途径提高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是对设备直接操作的,不需要借助于文件系统实现.
读写文件不是效率很低的嘛,那么数据库为何效率高呢
原帖由 "北京野狼" 发表:第一次听说数据库比文件系统效率高。
正常情况读写文件系统比数据库快一到两个数据级
严重同意!