4

从逻辑上讲......似乎 checkAndPut 需要更多时间。我对负载场景特别感兴趣,我们看到平均 checkandput 延迟为 15 毫秒(每行数据 17KB)....将 checkAndPut 转换为简单的“PUT”会显着降低平均延迟。

对于 99% 的用例,当我们执行 checkAndPut 时,我们写入的行键甚至都不存在。

4

1 回答 1

4

是的,check and put 延迟将比简单的 put 更高。然而,高多少取决于内存存储中有多少数据以及块缓存中有多少。

checkAndMutate 的工作方式如下:

  • 获取行锁
  • 等待所有未完成的交易被确认
  • 获取所需的单元格
  • 使用提供的规则比较它们
  • 执行放置/删除

由于如果成功的最后一步是执行 put,checkAndMutate 将增加一些成本。get 是(可能)其中最昂贵的部分。如果您能够添加布隆过滤器并将所有索引块保留在内存中,那么您可以确保 get 尽可能快。

于 2012-11-15T19:54:44.870 回答