读写文件不是效率很低的嘛,那么数据库为何效率高呢
你看我给的那个ORACLE连接,在LINUX上使用RAW是最慢的,使用EXT3是效率最高的.ORACLE研制了自己的CLUSTER_FS,是为CLUSTER使用的.
我是说,给出例子和使用证据,
读写文件不是效率很低的嘛,那么数据库为何效率高呢
再给一个权威的TEST结果http://www.oracle.com/technology/tech/linux/pdf/Linux-FS-Performance-Comparison.pdf
ORACLE的数据INPUT和OUTPUT
用ext3最快,ext2次之, 用RAWIO和OCFS(ORACLE自己的RAWFS)慢许多。
还是那句话,如果用朋友用ORACLE自己的OCFS,请给出例子和结果。
读写文件不是效率很低的嘛,那么数据库为何效率高呢
呵呵,是啊,我只是说一种可能,大家都喜欢自己做fs,好像连mysql都有自己的fs。不过现在很多fs也使用了数据库的高级技术(比如reiserfs也使用了b树),所以直接使用fs的接口可能比dbms自己的fs还要好用。dbms的fs主要使用b树,在检索方面很有优势,而单纯的io优化可能ext等os的fs更厉害些。
我本人没有对性能进行过对比,但感觉和兄台说的并不矛盾啊。我对dbms的fs设计没有什么研究,我自己开发的dbms的fs就是基于os fs的cellfs matrics,速度也是很快的:)
读写文件不是效率很低的嘛,那么数据库为何效率高呢
所以,楼主的题目中的命题就不应该成立。读写文件不是效率很低的嘛,那么数据库为何效率高呢
数据库是用share memory做的读写文件不是效率很低的嘛,那么数据库为何效率高呢
原帖由 "rainyor"]数据库是用share memory做的倒!
读写文件不是效率很低的嘛,那么数据库为何效率高呢
如果非要比较数据库和文件系统的效率,我想为了公平起见,还是在同一个层次上比较的好1。如果在数据存取这个层次上比,我想因为oracle的确绕过了操作系统而用自己的方式来使用磁盘,当然因为不存在文件系统这一层,所以要比read和write快。
2。如果在应用层级上比,可以这样来做,同样是1000个学生的成绩纪录,从中抽取想要的纪录。一个用数据库实现,一个用文件系统来实现,数据库可以不使用索引,当然文件系统也不能使用辅助的查询信息,比如hash等。我们来比一下谁先找到结果。我想这种比较的结果不说大家也都知道,因为在IO的这一块,文件系统可是不如oracle的奥,再有你的搜索算法不见得比oracle的要强吧。
3。文件系统和数据库的应用领域也不同,如果是信息管理,现在会有人用文件系统自己作起么?对于定长纪录,如工业控制的现场采集数据,因其数据结构已经定死,所以一般都使用文件来存取数据,因为文件的随机存取的效率肯定要比数据库的查询效率要高(即使带索引)
读写文件不是效率很低的嘛,那么数据库为何效率高呢
晕哦,大家都严重偏题了。数据库与单纯的文件根本没有比较的必要。数据库有一些额外的操作,自然是跑不过直接的读写的,因为数据库不管利用了多少优化技术,最终还是要从硬盘中读写数据的。
其实数据库只是为了更有效的管理数据而产生的,它仅仅是将大量的数据以一定的格式保存在一个或者多个文件中。他的效率高高在在正常的应用下比你一条数据放在一个文件中高一些,方便一些,而不是高在读取文件上。
你将若干条数据放到一个文件中,所放入的这个文件加上你的读写等操作程序也可以说是构成了一个简单的文本数据库系统。
对于特定的应用,比如某些人提到的定长数据这种情况,你用自己开发的数据库系统(就是我前面提到的文本数据库)当然很可能会比其它的数据库系统来得更高效。
数据库利用文件保存数据,但所用来保存数据的一个或者多个文件是数据库的一部分,但却不是全部。我认为数据库和文件没有任何可比性,根本不是一个概念。
读写文件不是效率很低的嘛,那么数据库为何效率高呢
就算非要将这两个本来就不是一个概念的东西拿来对比,也是根本无法比的。有谁能测出数据库本身花在随机读写一万个文件所用的准确时间?你能看到的是总的时间吧?
同理你也不是无法知道你写的程序花在随机读写一万个文件所用的时间的,你所能得到的也是你的程序运行的总的时间,到底有多少时间是真正花在读写磁盘上面的你能算出来吗?而且你所用的这个总的时间也可能因为你所用的程序语言而有所不同。
早点休息吧,不用再在这里争吵了,如果有人坚持认为使用文件效率更高(也许应该说是使用他自己的程序来组织自己的数据=自己的数据库系统),就用文件好了。 初始化参数db_file_multiblock_read_count 影响Oracle在执行全表扫描时一次读取的block的数量.
db_file_multiblock_read_count的设置要受OS最大IO能力影响,也就是说,如果 你系统的硬件IO能力有限,
即使设置再大的db_file_multiblock_read_count也是没有用 的。
理论上,最大db_file_multiblock_read_count和系统IO能力应该有如下关系:
Max(db_file_multiblock_read_count) = MaxOsIOsize/db_block_size
当然这个Max(db_file_multiblock_read_count)还要受Oracle的限制,
其实使用文件还是数据库,完全取决于你的数据与用途,如果你有大量的数据需要做各种操作和分析,而且比较复杂,那当然还是数据库为最好的选择。