这两个并行度设置的参数有什么区别呢,有例子说明吗?

image

3 个赞

OceanBase 并行度核心区别在于:‌parallel_degree_policy控制谁来决定并行度(自动 vs 手动),而 parallel_servers_target 控制允许多少并行任务同时运行(排队阈值),前者是策略开关,后者是资源容量限制 。‌‌

2 个赞

PARALLEL(n):我理想想用多少线程;
MAX_CONCURRENT(n):最多不许超过多少线程。
MAX_CONCURRENT是上限,不会强制一定要开到 n,只是不允许超过 n
PARALLEL 是期望的目标并行度,资源不足会收缩。

2 个赞

@论坛小助手

1 个赞

您的问题可能存在一些误解。根据OCR提取出的文本,似乎是在询问PARALLEL(N)MAX_CONCURRENT(N)这两个参数的区别,但根据提供的文档片段来看,并没有直接提到MAX_CONCURRENT(N)这一特定参数。不过,我将尝试解答关于PARALLEL(N)以及与之相关的、可能您所指的另一个参数parallel_servers_target之间的区别。

并行度设置参数的区别

  1. PARALLEL(N)

    • 用途:用于指定查询或操作(如创建物化视图日志、数据加载等)时的具体并行度。
    • 例子
      • 在SQL语句中使用Hint来设定查询并行度:
        SELECT /*+PARALLEL(8)*/ *
        FROM T1
        WHERE user_id = 123456
        AND create_time > DATE_SUB(NOW(), INTERVAL 1 DAY);
        
      • 设置表或索引的扫描并行度:
        ALTER TABLE table_name PARALLEL 4;
        ALTER INDEX index_name PARALLEL 2; -- Oracle模式下
        ALTER TABLE table_name ALTER INDEX index_name PARALLEL 2; -- MySQL模式下
        
    • 作用范围:可以针对单个查询或者对特定对象(表/索引)的操作生效。
  2. parallel_servers_target

    • 用途:定义了系统内同时处理并行执行任务的最大worker数量限制。如果请求的并行度加起来超过了这个值,则新的并行请求会被暂时挂起直至资源释放。
    • 默认配置:默认值为0,在实际应用中会依据CPU数量自动计算确定一个合理的上限值。
    • 配置示例
      SHOW VARIABLES LIKE '%paral%';
      +-------------------------+-------+
      | Variable_name           | Value |
      +-------------------------+-------+
      | parallel_servers_target | 4     |
      +-------------------------+-------+
      1 rows in set
      
    • 作用范围:是一个全局性的参数,影响整个数据库实例对于并行执行的支持能力。

总结

  • PARALLEL(N)主要用于具体指定某次操作或查询的并行度。
  • parallel_servers_target则用来控制整个系统层面能够支持的最大并行程度,确保不会因为过多的并行执行而导致资源耗尽。

希望这能帮助澄清这两个概念。如果有更具体的场景需求,请提供更多细节以便进一步分析。若MAX_CONCURRENT(N)指的是某个特别配置项且上述解释未能涵盖,请明确指出其来源或上下文,我将继续查找相关信息提供帮助。

具体信息可参考以下文档:

  1. CREATE MATERIALIZED VIEW LOG
  2. 并行查询的参数调优
  3. 设置并行执行并行度
  4. parallel_degree_limit
  5. Hint
  6. 并行执行分类与优化
  7. zone_merge_concurrency
1 个赞

详细

666