写入文本文件或通过键/值数据库的速度

时间:2011-10-13 12:38:17

标签: database linux file shell nosql

我只是通过shell命令或php测试了对文本文件的写入。使用while循环100万个循环,将循环编号附加到文件中(作为$ i \ n)。我认为这必须是在磁盘上存储数据的最快方法。在shell或php中,100万条记录需要大约40秒。

或者,我使用快速键/值数据库,如QDBM,GDBM等。整体时间甚至更短(15-30秒)。通过简单的数据库系统更快地存储数据的理论解释是什么?我认为速率限制应该是硬件(例如硬盘或CPU的速度)。

另一个问题:当将周期从100k增加到1M时,总时间增加了10倍;但是当从1M增加到10M时,花费的时间要长100倍。什么阈值使系统以这种方式变慢?

1 个答案:

答案 0 :(得分:1)

将数据写入磁盘的瓶颈通常是磁盘I / O.将连续块写入磁盘时,可以实现最快的连续输出。

我假设您的shell脚本中的文件已打开并关闭了100万次。每个关闭都会发出文件到磁盘的同步,这可能会导致等待(取决于文件系统和存储解决方案)。