我在 couchbase 4.1.0 上通过 CBQ 对大约 2000 万个文档运行查询时遇到问题。执行查询时,2 分钟超时后会打印此错误:
“代码”:12015,
"msg": "索引扫描超时 - 原因:索引扫描超时"。
我的问题是这样的
- 什么是索引扫描(这是寻找要使用的适当索引的扫描还是其他什么?
- 是什么原因导致这样的错误
- 查询这种大小的数据集是否超出了 couchbase 的能力?
索引扫描是在索引中查找查询谓词的过程。例如。如果您有一个名为“a”的字段,并且该字段上有一个名为“ix_a”的索引,则查询“SELECT * FROM bucket where A = 123”将对索引 ix_a 执行索引扫描以查找值 123。 正如 Gerald在评论中指出,默认索引
扫描超时为 2 分钟。这可以在设置中调整。
此错误可能是由于索引节点尺寸过小造成的,例如没有足够的 RAM,因此索引主要从磁盘读取,特别是当索引字段非常大时。或者服务器繁忙。在 4.1.0 中,COUNT(*) 查询还执行索引扫描,因此它将有效地遍历整个主索引并对所有项目进行计数。
查询 2000 万个项目完全在 Couchbase Server 的能力范围内,但是您必须花一些心思来正确设计索引,以确保查询能够良好执行。
这是一个非常通用的答案。如果您可以发布查询和查询执行计划,将会有所帮助。 (要获取执行计划,请在 N1QL 中运行以下命令:EXPLAIN <your query>
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)