逻辑上……似乎checkAndPut需要更多时间.我特别感兴趣的是负载场景,我们看到avg checkandput延迟为15ms(每行数据为17KB)….将checkAndPut转换为简单的’PUT’可以显着降低avg延迟. 对于99%的用例
对于99%的用例,当我们执行checkAndPut时,我们写入的行键甚至不存在.
是的,检查和放置延迟将高于简单的放置.但是,要高多少将取决于memstore中有多少数据以及块缓存中有多少.checkAndMutate的工作方式如下:
>获取行锁
>等待所有未完成的交易被激活
>获取所需的细胞
>使用提供的规则比较它们
>执行put / delete
由于最后一步如果成功执行put,checkAndMutate将有一些额外的成本.获得(可能)是最昂贵的部分.如果您能够添加bloom过滤器并将所有索引块保留在内存中,那么您可以确保get尽可能快.