RDBMS 结果缓存与应用程序级缓存?

RDBMS result caching vs Application level caching?

在我 10 年的经验中,我们使用默认配置的 RDBMS Oracle 或 SQL 服务器。从未调整默认情况下禁用的结果缓存(至少在 oracle 中)。我一直看到在应用程序级别使用缓存选项,如 ehcache/memcache/redis 等作为缓存解决方案。

问题 - 如果我在数据库服务器上有可用的内存带宽,是否主动使用结果缓存(即数据库级别)是否是一个很好的选择,无论我是否遇到任何性能问题? 对于此查询结果,select * from employee where department = 'Finance' 将始终与财务部门对应进行缓存。

我的问题是,如果硬件可以根据特定要求使用 LRU 或适当的算法来支持它,为什么不使用数据库级缓存呢? 我需要创建密钥的应用程序级缓存,将其部署(如 memcached)作为单独的服务器?

例如,ehcache 为您提供的应用程序级缓存使您的应用程序无需支付通过网络获取数据的费用。 (假设您的应用程序与 RDBMS 不在同一台机器上)

当您考虑时,looking at the common latency in IT systems,这对您的应用来说可能已经是一个巨大的收获。