无法理解为什么couchbase中的N1QL查询会挂起?

时间:2016-11-15 07:35:22

标签: azure couchbase n1ql

我有一个基础群集设置(couchbase版本4.1),其中有N个数据节点,1个查询节点和1个索引节点。数据节点在单个存储桶中具有大约100万个键值对。整个设置在虚拟网络中的Microsoft Azure中托管。并且可以向您保证每个节点都有足够的资源,RAM,CPU或磁盘不是问题。

现在我可以在我的couchbase服务器中获取/设置JSON文档而不会出现任何问题。我只是在测试,所以端口没有问题,因为我现在已经打开了机器之间的所有端口。

但是当我尝试运行N1QL查询(来自couchbase shell或使用python SDK)时,它不起作用。查询只是挂起,我没有收到服务器的任何回复。另一方面,偶尔查询工作没有任何问题,然后一分钟后它再次停止工作。

如果需要,我已在我的存储桶和任何其他所需的全局二级索引上创建了PRIMARY索引。

我还安装了couchbase提供的示例存储桶。存在同样的问题。

有没有人知道问题是什么?

1 个答案:

答案 0 :(得分:0)

您的查询可能因为您过度使用服务器而挂起,我不知道您每秒都会推送多少N1QL操作,但对于这种类型的查询,您可以通过多次调整获得最大好处,从而降低CPU使用率并提高效率。

  1. 创建特定的覆盖索引,例如:

    在客户端(id,email)上创建索引inx_id_email,其中transaction_successful = false

  2. 使用explain关键字检查您的查询是否正在使用索引。 (explain SELECT id, email FROM clients where transaction_successful = false LIMIT 100 OFFSET 200

  3. 我认为你的查询/索引节点使用得太多了,因为你实际上在关系数据库中做了相当于主扫描。