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

标签 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 倍的时间。什么阈值使系统以这种方式变慢?

最佳答案

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

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

关于database - 写入文本文件或通过键/值数据库的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7754251/

相关文章:

ios - 引用 iOS 应用程序的 Xcode 项目中的目录

PHP 搜索账户

python - 有没有办法将 networkx 图插入 mysql?

c# - 用Mono开发C#的可行性

linux - 替换偶数或奇数字符串匹配

c++ - 流程使用其时间片后是否保存分支预测器结果

c - 从 C 中的文件读取时忽略\n?

android - 单击 Activity 上的后退按钮时,从未在数据库上显式调用 close()

php - 数据库设计/结构——随时间收集数据

python - 无法使用python将数据写入文件