2010-07-20 113 views
12

這是在資源和效率方面做的更昂貴,文件的讀/寫操作或數據庫的讀/寫操作文件讀/寫VS數據庫讀/寫

+1

@OP,你能給我們一些背景嗎? – 2010-07-21 11:21:05

回答

10

我最初要說數據庫的讀/寫,因爲它會在數據庫開銷之外包含必要的文件io,但後來認識到它並不那麼簡單。如果您將整個數據庫加載到內存中,讀取將幾乎是瞬間的,因爲沒有涉及文件IO。

因爲數據庫引擎在返回之前不需要等待文件IO完成,所以通常寫入速度會更快,因爲它們可以採用「延遲寫入」方法。

另一方面,調整不良的數據庫比任何基於文件的IO都要慢幾個數量級。數據庫優化很重要很多。

+0

更重要的是,如果不使用自己的數據庫引擎,或者使用數百個數據庫開發人員花費數年的時間來快速查找數據,那麼使用簡單的file-io來提取需要的數據可能會更麻煩。 – nos 2010-07-20 18:43:42

3

這是一種加載的問題。我們在談論什麼尺寸的文件?千兆字節?此外,什麼類型和大小的數據庫?我經常使用組合。你想控制任何數據級別的完整性嗎?如果是這樣,你可能想把它留給數據庫,否則你必須控制應用程序級別的所有內容。
有很多因素需要做出正確的決定。例如,當我創建不想保留的臨時數據時,我使用File,但如果我正在使用要保留或備份的數據,則使用數據庫。
這與體系結構相結合非常重要。如果硬件,許可或設施是一個問題,那麼也許你不需要數據庫服務器等基礎設施。但是如果你有資源,那麼添加一個數據庫層可能是正確的選擇。

0

沒有簡單的答案。對於任何數據庫,您都必須始終運行它。但是,當你訪問它時,通常比訪問文件要快得多。如果你只談論少數幾個訪問,你就不會注意到很多不同之處。但是,當數據量達到每分鐘數百,數千和數百萬次時,數據庫將更快。正如Tim在上文中指出的那樣,一個調整不好的數據庫可能比訪問一個平面文件慢得多。