开发者社区 > 数据库 > 数据仓库 > 正文

云原生数据仓库AnalyticDB PostgreSQL创建物化视图的任务并行度如何设置?

问题1:云原生数据仓库AnalyticDB PostgreSQL创建物化视图的任务并行度如何设置?CREATE MATERIALIZED VIEW "mv_view"
with (appendonly = true, orientation = column) asc07dd502f934cdab0a799205134432f1.png
可以看到只有一个计算节点在跑。问题2:我们现在这个情况为什么只在一台单机pg上计算呢?

展开
收起
三分钟热度的鱼 2023-07-12 09:01:47 65 0
3 条回答
写回答
取消 提交回答
  • 在云原生数据仓库 AnalyticDB PostgreSQL 中,创建物化视图的任务并行度可以通过以下两种方式进行设置:

    1. 使用 ALTER MATERIALIZED VIEW 命令:您可以使用 ALTER MATERIALIZED VIEW 命令来修改已存在的物化视图,并指定并行度参数。例如,您可以使用以下命令将物化视图的并行度设置为8:

      ALTER MATERIALIZED VIEW my_materialized_view SET (parallel_workers = 8);
      

      请注意,这种设置只适用于以后刷新(REFRESH)物化视图时的并行度。

    2. 在创建物化视图时指定并行度:如果您正在创建新的物化视图,可以在 CREATE MATERIALIZED VIEW 语句中使用 WITH 子句来指定并行度参数。例如,以下命令将创建一个并行度为8的物化视图:

      CREATE MATERIALIZED VIEW my_materialized_view
      WITH (parallel_workers = 8)
      AS
      SELECT ...
      FROM ...
      

      这种方式会在创建物化视图时直接设置并行度。

    需要注意的是,并行度设置的最大值受到系统配置和资源限制的影响。确保设置的并行度不超过系统可用的并行工作者数量和集群配置的限制。

    在决定使用何种并行度设置时,建议综合考虑数据量、硬件资源和查询性能等因素。根据具体情况进行测试和调整,并根据实际性能表现进行优化。

    2023-07-26 13:23:02
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在云原生数据仓库AnalyticDB PostgreSQL中,创建物化视图的任务并行度可以通过设置并行创建物化视图的最大进程数来实现。最大进程数决定了在创建物化视图时可以使用的最大并行进程数,从而提高任务的并行度和执行效率。

    在创建物化视图时,您可以使用以下语法来设置并行创建物化视图的最大进程数:

    Copy
    CREATE MATERIALIZED VIEW "mv_view"
    WITH (appendonly = true, orientation = column, parallel_workers = N)
    AS
    ...
    其中,“parallel_workers = N”表示最大并行进程数,N为正整数。如果不设置该参数,则默认最大并行进程数为1。

    需要注意的是,设置并行创建物化视图的最大进程数需要根据实际情况进行调整。如果设置的值过大,可能会导致资源竞争和阻塞,影响整个数据库的性能。建议您根据数据库的实际负载和硬件配置,适当调整并行进程数,以达到最佳的执行效率和性能。

    2023-07-23 10:07:36
    赞同 展开评论 打赏
  • 针对问题1的回答:我看到数据库 select from pg_settings where name = 'max_parallel_degree';
    这个参数的默认设置是0 ? 这个问题我解释一下,max_parallel_degree 这个是单机pg的并行度设置,我们是基于postgresql的mpp分布式数据库,这个我们和单机pg不一样的,max_parallel_degree 这个参数我们不用的。针对问题2的回答:yield_spread.indu_bond_yield_spread 这个表不倾斜,但是select 计算出来的结果 就是GROUP BY indu_bond_yield_spread.spread_date, CUBE (indu_bond_yield_spread.spread_bond_type, indu_bond_yield_spread.bond_ext_rating_mapping, indu_bond_yield_spread.bond_implied_rating_mapping_tag, indu_bond_yield_spread.com_yy_rating_mapping_tag, indu_bond_yield_spread.spread_remaining_tenor_tag, indu_bond_yield_spread.guaranteed_status)
    HAVING (count(
    ) >= 5); 中间计算结果有可能出现计算的倾斜,才会导致节点的cpu使用不一致。此回答整理自钉群“云原生数据仓库AnalyticDB PostgreSQL版交流群”

    2023-07-12 09:09:04
    赞同 展开评论 打赏

相关产品

  • 云原生数据仓库AnalyticDB MySQL版
  • 云原生数据仓库 AnalyticDB PostgreSQL版
  • 相关电子书

    更多
    云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
    2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
    2023云栖大会:PolarDB for AI 立即下载

    相关镜像