2013-03-08 71 views
1

這可能聽起來很愚蠢......
假設一個場景,其中緩存中有100,000個記錄,密鑰爲someId
現在數據庫擁有1,00,000條記錄,主要記錄爲someId

我的問題是在這種情況下會更快?訪問緩存或使用where子句敲擊數據庫?
讓我們假設使用的緩存是EHCache,DB是MySql。什麼會更快 - 當EHCache或數據庫都有相同的記錄時,會發生什麼?

+0

我可以知道downvoting的原因嗎? – Anubhab 2013-03-09 09:47:45

回答

2

緩存是本地的,位於RAM中,數據庫是遠程的,數據位於磁盤中(最常見)。關鍵區別!

看着Numbers Everyone Should Know (slide #13)你正在看大約100-1000ns(從高速緩存讀取數據)VS 20000 ns(通過1Gbps網絡發送2Kb)。所以即使排除磁盤讀取差異已經是〜20倍。如果您的磁盤讀取帳戶(10 000 000 ns),則差異將變爲10 000 x。

但這些都是理論計算;你需要測量自己。

+0

偉大的鏈接@ mindas..thanks :) – Anubhab 2013-03-11 13:06:13

相關問題