这可能听起来很愚蠢......
假设一个场景中缓存中有1,00,000条记录,密钥为someId
现在,数据库有1,00,000条主键为someId
的记录。
我的问题是在这种情况下会更快?使用where
子句访问缓存或命中DB?
我们假设使用的缓存是EHCache,DB是MySql。
答案 0 :(得分:2)
缓存是本地的,位于RAM中,db是远程的,数据位于磁盘中(最常见)。关键区别!
查看Numbers Everyone Should Know (slide #13)您正在查看大约100-1000ns(从缓存中读取数据)VS 20000 ns(通过1Gbps网络发送2Kb)。所以即使不包括磁盘读取差异已经是20倍。如果您考虑磁盘读取(10 000 000 ns),差异将变为10 000x。
但这些都是理论计算;你需要自己测量。