我有一个基础群集设置(couchbase版本4.1),其中有N个数据节点,1个查询节点和1个索引节点。数据节点在单个存储桶中具有大约100万个键值对。整个设置在虚拟网络中的Microsoft Azure中托管。并且可以向您保证每个节点都有足够的资源,RAM,CPU或磁盘不是问题。
现在我可以在我的couchbase服务器中获取/设置JSON文档而不会出现任何问题。我只是在测试,所以端口没有问题,因为我现在已经打开了机器之间的所有端口。
但是当我尝试运行N1QL查询(来自couchbase shell或使用python SDK)时,它不起作用。查询只是挂起,我没有收到服务器的任何回复。另一方面,偶尔查询工作没有任何问题,然后一分钟后它再次停止工作。
如果需要,我已在我的存储桶和任何其他所需的全局二级索引上创建了PRIMARY索引。
我还安装了couchbase提供的示例存储桶。存在同样的问题。
有没有人知道问题是什么?
答案 0 :(得分:0)
您的查询可能因为您过度使用服务器而挂起,我不知道您每秒都会推送多少N1QL操作,但对于这种类型的查询,您可以通过多次调整获得最大好处,从而降低CPU使用率并提高效率。
创建特定的覆盖索引,例如:
在客户端(id,email)上创建索引inx_id_email,其中transaction_successful = false
使用explain关键字检查您的查询是否正在使用索引。
(explain SELECT id, email FROM clients where transaction_successful = false LIMIT 100 OFFSET 200
)
我认为你的查询/索引节点使用得太多了,因为你实际上在关系数据库中做了相当于主扫描。