使用覆盖索引在小型数据集上降低N1QL性能

时间:2019-07-04 15:51:41

标签: performance indexing couchbase n1ql

我正在使用Couchbase 6社区版,我的存储桶中有大约200万个小尺寸(<5000字节)的文档 每个文档都有一个名为country的字段,而我在此字段上有一个GSI。 此字段有四个唯一值,但是,查询要获得这些唯一值需要8到10秒。 我不确定为什么会这么慢。 我的查询是:

SELECT DISTINCT(country)
FROM test_bucket
USE INDEX(country_index USING GSI)
WHERE country IS NOT MISSING

此存储桶上的内存配额为50 GB。 该机器有40个内核。

我想问一下这里的瓶颈是什么或在这种情况下会导致瓶颈的原因

1 个答案:

答案 0 :(得分:1)

您有正确的索引。由于您有200万个国家/地区文档,因此查询引擎需要从索引器中获取所有200万个条目并消除重复项。使用第341页https://blog.couchbase.com/n1ql-practical-guide-second-edition/

中所述的请求配置文件

还介绍了https://dzone.com/articles/count-amp-group-faster-using-n1ql

的结帐技术

如果您可以使用EE版本,则可以通过将查询更改为分组方式来使用索引聚合,如此处https://blog.couchbase.com/understanding-index-grouping-aggregation-couchbase-n1ql-query/所述。

SELECT country
FROM test_bucket
USE INDEX(country_index USING GSI)
WHERE country IS NOT MISSING
GROUP BY country;