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