我只是通过shell命令或php测试了对文本文件的写入。使用while循环100万个循环,将循环编号附加到文件中(作为$ i \ n)。我认为这必须是在磁盘上存储数据的最快方法。在shell或php中,100万条记录需要大约40秒。
或者,我使用快速键/值数据库,如QDBM,GDBM等。整体时间甚至更短(15-30秒)。通过简单的数据库系统更快地存储数据的理论解释是什么?我认为速率限制应该是硬件(例如硬盘或CPU的速度)。
另一个问题:当将周期从100k增加到1M时,总时间增加了10倍;但是当从1M增加到10M时,花费的时间要长100倍。什么阈值使系统以这种方式变慢?
答案 0 :(得分:1)
将数据写入磁盘的瓶颈通常是磁盘I / O.将连续块写入磁盘时,可以实现最快的连续输出。
我假设您的shell脚本中的文件已打开并关闭了100万次。每个关闭都会发出文件到磁盘的同步,这可能会导致等待(取决于文件系统和存储解决方案)。