2
我有一種情況,我必須查詢數據庫中的所有用戶和每天更改的相同數據,所以我想我可以創建一個文件我會保存這些數據(每天一次),然後每次用戶訪問我的網站時從該文件加載它。將小數據寫入文件並從中讀取或查詢數據庫
現在,我知道這是一個常見的做法(緩存),當數據庫的請求很大,但我要寫入該文件的數據是一個簡單的3位數字,所以我的問題是這應該仍然會更快,還是隻是一個矯枉過正,我應該堅持數據庫查詢?
我有一種情況,我必須查詢數據庫中的所有用戶和每天更改的相同數據,所以我想我可以創建一個文件我會保存這些數據(每天一次),然後每次用戶訪問我的網站時從該文件加載它。將小數據寫入文件並從中讀取或查詢數據庫
現在,我知道這是一個常見的做法(緩存),當數據庫的請求很大,但我要寫入該文件的數據是一個簡單的3位數字,所以我的問題是這應該仍然會更快,還是隻是一個矯枉過正,我應該堅持數據庫查詢?
當正確完成時,緩存總是更快。
它取決於從文件中存儲和檢索數據需要多長時間以及對數據庫的請求需要多長時間。
如果數據庫查詢獲取數字需要很長時間,那麼緩存可能是個好主意,因爲數據很小。
如果您要在包含大量緩存數據(似乎不是這種情況)的文件中執行搜索(例如順序),則需要很長時間。
磁盤I/O可能比數據庫I/O慢(這不太可能,除非它是本地數據庫)。
底線 - 基準。
對於您的情況,緩存可能是一個好主意,但如果它只是一個3位數字的所有用戶,那麼我只是嘗試將它粘貼到RAM而不是文件中。
你有數百萬用戶嗎?獲得這個數字是否昂貴?你有基準嗎? – 2013-02-13 10:43:46
@MitchWheat:我有大約50k的用戶。獲取數字將是一個簡單的「SELECT COUNT(*)FROM table」查詢。我沒有對原因進行基準測試,然後我會知道哪一個是更好的解決方案,我想在測試之前聽聽你們的想法(因爲時間總是[不太在我身邊](http://www.youtube .com/watch?v = rIE2GAqnFGw)滾動的石頭可能會唱歌:)),但似乎我將不得不在最後。 – Nikola 2013-02-13 11:38:43
有人必須已經完成這些基準。有人可以找到鏈接或張貼結果。 – mastaBlasta 2013-03-20 14:52:18