哪些因素可以使项目计数与 couchbase 中的项目 ID 计数不同?

What are the factors that can make the item count differ from the item id count in couchbase?

在 3 节点 Couchbase Community Edition 5.0.1 build 5003 集群上,couchbase 表示它包含 12268503 个项目。但是统计id的时候,结果是6132875.

哪些因素会导致 couchbase 中的项目计数与项目 id 计数不同?

更准确地说,当在存储桶上执行以下 N1QL 查询时 - 例如 Product

SELECT count(1) FROM Product

给出

12268503

当对项目 ID 进行计数时

SELECT count(META(Product).id) FROM Product

它returns:

6132875

即id数量小于item数量的50%

另外,他们几个小时都没有对bucket进行任何操作(0ops/s),这排除了由于流量高峰导致主索引赶不上的可能性。

我仔细阅读了 couchbase 博客和文档,但没有找到关于此计数差异的任何线索。非常感谢任何指针。

如果查询没有 predicate/no 连接并且投影有单个表达式 count(*), count(constant) 查询从 bucket stats 获取结果并提供信息(需要亚毫秒)。

   SELECT count(*) FROM Product;
   SELECT count(1) FROM Product;

以下几乎相似,但 COUNT 参数是表达式,因此它必须使用索引并进行聚合(因为在这种情况下文档键是唯一的并且必须是字符串,优化器应该考虑作为以前的方法,截至目前没有优化)

SELECT count(META(Product).id) FROM Product

在第二种情况下它使用索引,您的索引可能有待处理的项目并且没有赶上。尝试使用 scan_consistency。检查以 .

开头的索引统计信息