【问题标题】:Speed of writing to a text file or via key/value database写入文本文件或通过键/值数据库的速度
【发布时间】:2011-10-13 12:38:17
【问题描述】:

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

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

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

【问题讨论】:

    标签: database linux file shell nosql


    【解决方案1】:

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

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

    【讨论】:

    • 你说的很对。在数据库中,我们保持连接打开。这就是重点:)
    猜你喜欢
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多