对于大量数据,缓存值得吗?

时间:2019-06-27 06:56:42

标签: caching architecture system-design large-scale

假设我们有一个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%。

1 个答案:

答案 0 :(得分:1)

“以某种方式随机”是关键。

如果请求是真正随机请求,则缓存不太可能提供帮助。您的逻辑是正确的。但事实证明,在实际系统中,许多数据存储都具有不一致,高度相关的访问模式。

这仍然适用于大量数据。总共有多少数据无关紧要。经常需要多少东西很重要。

[编辑] 此更新没有意义。您在这里平均速度,但是需要平均操作时间。