Couchbase——完全驱逐与价值驱逐

Couchbase - Full Eviction vs Value Eviction

价值驱逐比完全驱逐有多大优势?在 Value eviction 的情况下,我假设 RAM 中存在元数据。元数据的存在如何帮助更快地检索内容? NRU 文件驱逐是否达到高水位线?在将逐出政策从价值逐出更改为完全逐出之前,我们需要考虑哪些方面。

值逐出将所有文档元数据保留在内存中,而完全逐出则不会。

假设您执行了一个不存在的密钥。在价值逐出模式下,您会立即知道密钥不存在,因为它只是内存操作。在完全逐出模式下,如果该键的元数据不在内存中,那么您必须进行磁盘提取以确保它们的键不存在。

基本上任何需要了解有关键元数据的某些信息的操作都可能需要后台获取。如果元数据不在内存中,其他一些可能会很慢的操作是 CAS 设置(仅当值未更改时检查和设置)、追加、增量、减量和前置。还要记住,额外的磁盘 activity 可能会导致影响 Couchbase 其他部分的磁盘争用。

NRU 在完全驱逐和价值驱逐中是相同的,Couchbase 将尽最大努力将您的工作集保留在内存中。

我建议在切换模式之前尝试了解您的工作负载情况,并通过完全驱逐对其进行测试,因为您可能会发现性能问题会因工作负载而异。

除了 Mike 的回答之外,这里值得一提的是布隆过滤器,这是 Couchbase 的一个非常强大的功能,可以显着减少磁盘访问。布隆过滤器也在仅值弹出模式中启用,但 Couchbase 在完全弹出模式下真正利用了它们的功能。我当时的情况是系统已经达到了只有价值的弹射桶的极限,我测试了两种驱逐模式,最终完全弹射最终要好得多——至少对我来说是这样。