2017-03-25 59 views
1

在10年的礦井經驗中,我們默認使用RDBMS或Oracle或SQL服務器進行配置。從來沒有調整默認情況下禁用的結果緩存(至少在oracle中)。我總是看到在應用程序級別使用緩存選項,如ehcache/memcache/redis等作爲緩存解決方案。RDBMS結果緩存vs應用程序級別緩存?

問題 - 如果我在數據庫服務器上有可用的內存帶寬,是否會主動使用結果緩存(即數據庫級別)是否不是一個好選擇,無論我是否面臨任何性能問題? 與此查詢結果說select * from employee where department = 'Finance'將永遠被緩存對應財務部門。

我的問題是爲什麼不使用數據庫級高速緩存,如果硬件可以支持LRU或適當的算法每個特定的需求而不是 的應用程序級緩存,我需要創建密鑰,部署它(如memcached)作爲單獨的服務器?

+0

我的一般規則:不要緩存緩存。一個數據庫會做各種緩存;很少需要添加另一層緩存。 –

回答

1

例如,ehcache爲您提供的應用程序級緩存允許您的應用程序不支付通過網絡獲取數據的價格。 (假設您的應用程序不在您的RDBMS所在的機器上)

當您考慮時,looking at the common latency in IT systems對您的應用程序來說可能已經是一個巨大的收益。

+0

同意。這裏指的是'EHcache(用於我已經需要經常需要並且從數據庫中獲取成本高的對象)'和'數據庫緩存(對於可能成本高昂或使用量不高的數據庫對象取決於工作流程)「。我在這裏試圖說明的是,爲什麼不用LRU將DB緩存配置爲一些大的值,這樣可以從內存中取出一些查詢結果(無論它們是否昂貴),而不是IO調用。至少它肯定會有所作爲,如果不是很大的話 – emilly

+0

是的,我想這是有道理的。但它也聽起來像你最終有2個緩存配置和記住... ... –