2011-10-13 45 views
0

我測試了通過shell命令或php寫入文本文件。使用while循環100萬個循環,將循環編號添加到文件中(如$ i \ n)。我認爲這是將數據存儲在磁盤上的最快方式。在shell或php的地方,100萬條記錄大約需要40秒。寫入文本文件或通過鍵/值數據庫的速度

或者,我使用快速鍵/值數據庫,如QDBM,GDBM等,總體時間甚至更短(15-30s)。通過簡單的數據庫系統更快地存儲數據的理論解釋是什麼?我認爲速率限制應該是硬件(例如硬盤或CPU的速度)。

另一個問題:當將週期從100k增加到1M時,總體時間增加了10倍;但是當從1M增加到10M時,花費了100倍。什麼樣的門檻使系統變慢?

回答

1

將數據寫入磁盤的瓶頸通常是磁盤I/O。將連續塊寫入磁盤時可實現最快的連續輸出。

我假設文件在shell腳本中被打開和關閉了100萬次。每次關閉都會將文件同步到磁盤,這可能會導致等待(取決於文件系統和存儲解決方案)。

+0

你說得很對。在數據庫中,我們保持連接打開。這纔是重點 :) – Googlebot

相關問題