【问题标题】:N1QL performance with joinN1QL 性能与连接
【发布时间】:2016-05-17 08:51:58
【问题描述】:

我为 N1QL 的性能而苦恼。我有 3 个节点 4.1 集群设置,每个节点 6gb 和 1 个副本集。总共插入了 200 万个平均大小为 100k 的文档。使用 N1QL 选择文档时,查询在同一个存储桶中连接,因此可能看起来像它的自连接。我在 21 分钟内得到数据。这太可怕了。在我加入的键上,我已经创建了索引。我还缺少什么。对我来说,如果 ForestDB 真的在工作,它应该在亚秒内给我结果。在这里寻找答案。虽然没有得到沙发基地论坛的太多支持。

【问题讨论】:

  • 你能告诉我们哪个文档有No_作为主键,哪个文档有No_作为外键吗?我屏蔽了N和X,即N个文档是否有No_作为主键,还是X个文档有No_作为主键?
  • 你能用 N1QL 查询更新你的问题吗?这可能会对问题有所启发......
  • 正如发布的那样,这不是问题,关于此性能优化的讨论在这里:forums.couchbase.com/t/perfomance-issue-with-n1ql-self-join/…。我不知道你为什么说“没有得到太多支持”,因为我在 Couchbase 的同事正在努力帮助你。
  • 当然我要把它移到那里。基本上,我正在评估生产使用情况,而我获得的性能是在几分钟内而不是几秒钟内。这就是为什么我也在这里发帖以获得其他人的牵引力和一些明显的答案。看起来我只是一个尝试使用 N1QL 的人。

标签: performance couchbase n1ql bigdata


【解决方案1】:

请创建以下索引并尝试其下方的查询。

    CREATE INDEX idx_gle_type_balance2 ON NAV(No_, Balance, Type) WHERE (Type = 'GLEntry') USING GSI;

select 
X.No_ AS No_,
IFNULL(Sum(X.Balance),0) as Balance
from NAV X USE INDEX (idx_gle_type_balance2)
Where X.Type = "GLEntry" 
and X.Balance IS NOT MISSING
AND X.No_ IS NOT MISSING
Group by X.No_;

----- Siddu 的更新是,在新索引到位后,查询运行大约需要 1.7 秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 2010-10-14
    • 1970-01-01
    • 2018-01-04
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多