2010-08-03 75 views
12

我正在C#中設計一個CMS,並需要決定爲網站保存配置設置的位置。同時考慮定義我的基本html模板,然後處理它們在服務器端提前創建頁面。哪一個閱讀XML文件或查詢數據庫的速度更快

那麼服務器讀取XML文件或從本地數據庫查詢相同信息的速度通常更快/更少?

回答

9

這似乎不太可能,我認爲這將是你的代碼的瓶頸。您多久計劃一次閱讀配置設置?配置通常是相當很小,並且很少讀取。有考慮在哪裏以及如何存儲它更重要的事情:

  • 自舉:你也許可以依靠其訪問本地文件系統中的應用程序,您可以硬編碼的配置文件名..但如果你的所有配置都在數據庫中,那麼你在哪裏配置要與哪個數據庫進行通信?

  • 易於調整和部署:手工編輯服務器上的配置文件可以比使得在數據庫中的變化更快...但如果你有多個服務器,你要在調整文件他們每一個人?

  • 簡單的代碼讀取/處理配置:你的配置是什麼樣的?它自然是分層的嗎?如果是這樣,XML很可能是一個很好的選擇。如果它更像是一組名稱/值對,那麼一張簡單的表就非常適合。當然,您可以將XML存儲在數據庫中 - 您不必將綁定,將存儲位置和存儲格式決定在一起。在數據庫上編輯XML文檔可能比編輯XML文件或更改個別值更困難......但通過使用此類工具,您始終可以使生活更輕鬆。

+0

謝謝。我打算採用混合方法將數據放入本地文件,並將數據放入數據庫中。我想我會根據答案完全配合數據庫存儲。我正在構建的應用程序將有一個安裝程序編碼它將處理數據庫設置和初始web.config設置。 – Adrian 2010-08-03 06:33:31

0

如果你最重要的一點是速度,那麼使用數據庫。 xml非常慢。

但是, 如果你的數據很「複雜」,或有許多不同的關係和屬性,可以考慮使用XML

+3

如果通過互聯網訪問數據庫呢?而XML文件只有10行和本地?你不能認爲XML比數據庫慢,問題不夠明確 – 2010-08-03 06:31:59

3

只爲服務器設置 - 真的沒關係。你只會讀一次。即使需要幾秒鐘,仍然是不可知的。

首先測量,然後優化。

2

一段字符串有多長?我可以編寫一個數據庫查詢,它比從XML文件中讀取相同數據要慢得多,但我也可以編寫一個XML查詢比讀取數據庫慢得多的XML文件。

我想說,如果你顯示的是「主要」靜態內容,並且你擔心性能,那麼以你認爲最簡單的方式實現它可能是一個更好的主意,然後使用緩存機制使其具有高性能 - 這樣,第一次訪問可能會「慢」,但後續訪問會快得多。

通常,如果您要生成HTML內容,請將完成的HTML寫入磁盤並將其發送到瀏覽器,而不是在隨後的請求中從數據庫/ XML文件填充它。如果您有後端進程在對內容進行更新時刪除緩存的文件,則服務器可以自動檢測文件何時不存在並重新生成。

1

這取決於您要用來訪問數據的策略。

如果你走數據庫路線,你打算緩存結果嗎?如果你不斷從數據庫中提取細節,可能會有很多網絡喋喋不休。

在簡單性方面,你真的可以不可知的使用LINQ的數據源..

更快? 一旦東西在內存中應該沒有區別。正如另一張海報所指出的,配置信息通常是相當靜態的。爲什麼不創建控制檯應用程序並通過使用分析器來量化差異。

http://www.red-gate.com/products/ants_performance_profiler/index.htm?utm_source=google&utm_medium=cpc&utm_content=brand_aware&utm_campaign=antsperformanceprofiler&gclid=CLXmzbLXnKMCFQs-lAodSXTGsQ

0

我只是在這裏默認使用數據庫。 速度更快,所需代碼更少。

相關問題