刚刚实现了一个设计,我已经在hashmap中缓存了一些数据并从中检索了数据,而不是从DB查询相同的数据。
我的想法是否正确?
答案 0 :(得分:7)
将数据副本保存在内存中几乎肯定比从数据库中获取数据更快。
尽管如此,还需要考虑进一步的考虑因素:
答案 1 :(得分:4)
点击集合比点击数据集快几个数量级,特别是在另一台服务器上(由于通信滞后)
那说:
答案 2 :(得分:3)
如果你仔细考虑与数据库交谈时会发生什么,你可以自己回答:
相比之下,对散列数据结构的查找需要一些内存访问,每个访问可能需要几纳秒。差异是several orders of magnitude。
答案 3 :(得分:2)
要考虑的主要问题是缓存的大小:在某个阈值之后,您造成的伤害大于良好。例如,如果缓存有一百万个条目,并且每个条目都是1 KB(考虑到每个对象的开销,不是很难达到),那么您已经占用了一个完整的千兆字节的堆。在这种情况下,主要GC的表现也会很糟糕。
答案 4 :(得分:0)
总是比你在代码级别所做的任何事情都要昂贵。
答案 5 :(得分:0)
这样看:要查询数据库,必须将字节复制到内存中。因此,访问内存总是比访问数据库更快。
答案 6 :(得分:0)
如果计算哈希码的成本很低,它应该快得多,它还取决于条目的数量(因为会有更多的冲突)