【问题标题】:Does a query get parallelized in couchbase查询是否在沙发库中并行化
【发布时间】:2020-10-26 16:55:38
【问题描述】:

我在浏览文档时找不到这个问题的答案。如果我使用 couchbase 的 QUERY 节点运行查询,couchbase 是否会根据查询节点中可用的核心自动将查询拆分为多个部分,以并行运行 SQL 的每个部分。例如,如果我有如下查询

SELECT * FROM bucket1;

查询节点有8个核心,上面的查询是分成8个部分吗?

【问题讨论】:

    标签: couchbase n1ql


    【解决方案1】:

    查询示例:

    SELECT *
    FROM bucket1
    WHERE ...;
    

    上述查询首先需要解析、准备、计划。所有这些都是串行运行的。 Plan 生成各种运算符(Authorize、IndexScan、Fetch、Filter、Projection ......)。 在执行期间,假设没有阻塞操作(如组、聚合、排序),这些运算符中的每一个都独立运行并在不同文档上并行工作。在 Fetch 中,它使用尽可能多的内核来获取数据。 检查 EXPLAIN 是否存在并行运算符。默认情况下为 1,您可以通过设置查询参数 max_parallelism 来更改它(将更改这些运算符并行运行的副本数)(每个工作不同的文档)。由于上下文切换,设置更高的值可能会产生负面影响。

    以下两个链接有详细说明的图表。

    https://docs.couchbase.com/server/5.0/architecture/querying-data-with-n1ql.html https://dzone.com/articles/new-performance-tricks-with-n1ql

    注意:CE 版本的查询服务仅使用 4 个核心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多