对于大量数据,缓存是不是值得?
Posted
技术标签:
【中文标题】对于大量数据,缓存是不是值得?【英文标题】:Is caching worth it, for huge amount of data?对于大量数据,缓存是否值得? 【发布时间】:2019-11-09 03:39:29 【问题描述】:假设我们有一个键值对数据500TB
。我们可以使用2.5TB
内存来缓存这些对以供将来的请求使用。这些请求有些随机。
The probability of cache hit would be 2.5/500 = 0.5%
我知道,如果我们使用 LFU eviction,命中率可能会随着时间的推移而增加,因为随着时间的推移,键会更频繁地保留在缓存中,从而提高缓存命中率。
所以,如果系统从存储10K QPS
读取的吞吐量,那么使用缓存将提高速率0.05%
(忽略内存寻道时间)。
那么吞吐量将是10,050 QPS
。
在这种情况下使用缓存的效率如何?
我们应该不使用缓存吗?
更新
我想我这里有一个错误。如果我们有 100% 的命中率,那么吞吐量将是 1MQPS。如果我们的命中率为 0%,那么吞吐量将为 10KQPS。
具有 0.5% 的命中率(假设线性关系)产生于
(0.5*(1M-10K)/100)+10K = 14950 QPS
吞吐量增加了 50%。
【问题讨论】:
【参考方案1】:“不知何故随机”是关键。
如果请求是真正随机的,则缓存不太可能提供帮助。你的逻辑是正确的。但在实际系统中,事实证明许多数据存储具有非统一的、高度相关的访问模式。
这仍然适用于大量数据。总共有多少数据并不重要。重要的是经常需要多少。
[编辑] 更新没有意义。您在那里平均速度,但您需要平均操作时间。
【讨论】:
以上是关于对于大量数据,缓存是不是值得?的主要内容,如果未能解决你的问题,请参考以下文章
能否使用require('.json')的方式加载大量JSON文件?
与使用 WebSockets 发送大量消息相比,发送大量消息是不是有很多开销?
#导入Word文档图片#值得收藏:当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢