假设我们有一个500TB
的键值对数据。我们可以使用2.5TB
内存来为将来的请求缓存这些对。这些请求有些随机。
The probability of cache hit would be 2.5/500 = 0.5%
我知道,如果我们使用LFU逐出,则命中率可能会随着时间增加,因为随着时间的推移,密钥将保留在缓存中的次数会增加,从而增加缓存的命中率。
因此,如果系统从存储空间10K QPS
读取数据的吞吐量,那么使用缓存将使速率提高0.05%
(忽略内存寻道时间)。
则吞吐量将为10,050 QPS
。
在这种情况下使用缓存的效率如何?
我们应该没有缓存吗?
更新
我认为我在这里有一个错误。如果我们命中率达到100%,那么吞吐量将为1MQPS。如果命中率为0%,那么吞吐量将为10KQPS。
命中率(假设线性关系)为0.5%时
(0.5*(1M-10K)/100)+10K = 14950 QPS
吞吐量提高了50%。
答案 0 :(得分:1)
“以某种方式随机”是关键。
如果请求是真正随机请求,则缓存不太可能提供帮助。您的逻辑是正确的。但事实证明,在实际系统中,许多数据存储都具有不一致,高度相关的访问模式。
这仍然适用于大量数据。总共有多少数据无关紧要。经常需要多少东西很重要。
[编辑] 此更新没有意义。您在这里平均速度,但是需要平均操作时间。