news 2026/4/16 14:27:36

运维系列数据库系列【仅供参考】:达梦数据库:并行查询--dba手册

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运维系列数据库系列【仅供参考】:达梦数据库:并行查询--dba手册

达梦数据库:并行查询--dba手册

  • 并行查询--dba手册
    • 22.8 并行查询
      • 22.8.1 并行查询概念
      • 22.8.2 确定并行任务个数
      • 22.8.3 确定并行工作线程数
      • 22.8.4 执行查询
      • 22.8.5 使用场景




并行查询–dba手册

22.8 并行查询

22.8.1 并行查询概念

倘若没有并行查询技术,一个串行执行的查询语句只能利用 CPU 或者磁盘设备中的一
个,而不能利用整个计算机的处理能力。并行查询技术的出现,使得单个 SQL 语句能利用
多个 CPU 和磁盘设备的处理能力。其优势在于可以通过多个线程来处理查询任务,从而提
高查询的效率。
达梦数据库为具有多个 CPU 的数据库服务器提供并行查询的功能,以优化查询任务的
性能。数据库服务器只有具有多个 CPU,才能使用并行执行查询操作,来提高查询任务的速
度。
达梦数据库通过三个步骤来完成并行查询:首先,确定并行任务数;其次,确定并行工
作线程数;最后,执行查询。并行查询相关参数见下表:
表 22.1 并行查询相关参数

参数名缺省值属性说明
MAX_PARALLEL_DEGREE1动态,会话级用来设置默认并行任务个数。取值范围:1~128。缺省值 1,表示无并行任务。当 PARALLEL_POLICY 值为 1 时该参数值才有效。
PARALLEL_POLICY0静态用来设置并行策略。取值范围:0、1 和 2,缺省为 0。其中,0 表示不支持并行;1 表示自动并行模式;2 表示手动并行模式。
PARALLEL_THRD_NUM10静态用来设置并行工作线程个数。取值范围:1~1024。

22.8.2 确定并行任务个数

当开启自动并行(PARALLEL_POLICY=1)时,参数 MAX_PARALLEL_DEGREE 生效,
控制并行查询最多使用的线程数。MAX_PARALLEL_DEGREE 缺省值为 1,表示不并行。此
时若指定参数对应的 HINT “PARALLEL”,则使用 HINT 值;
当开启手动并行(PARALLEL_POLICY=2)时,参数 MAX_PARALLEL_DEGREE 失效,
用户需要在语句中使用此参数对应的 HINT “PARALLEL”指定语句的并行度,否则不并行。
1. 在 INI 参数中设置默认值
INI 参数 MAX_PARALLEL_DEGREE 设置最大并行任务个数。取值范围:1~128。缺省
值 1,表示无并行任务,此参数仅在 PARALLEL_POLICY 值为 1 时才有效。
例如,在 INI 参数中将 MAX_PARALLEL_DEGREE 设置为 3 的格式如下:
MAX_PARALLEL_DEGREE 3
然后,使用一般的 SQL 语句查询即可执行并行查询,不需要使用 HINT。如:
SELECT * FROM SYSOBJECTS;
2. 在 SQL 语句中使用“PARALLEL”关键字特别指定
当 PARALLEL_POLICY=2 时,需要在 SQL 语句中通过“PARALLEL”HINT 指定并行
度,否则不并行。若 PARALLEL_POLICY=1,则 SQL 语句中使用的“PARALLEL”HINT
总是优先于 MAX_PARALLEL_DEGREE 参数设置。
―PARALLEL‖关键字的用法是在数据查询语句的 SELECT 关键字后,增加 HINT 子句
来实现。
HINT 语法格式如下:
/*+ PARALLEL([<表名>] <并行任务个数>) /
例如,下面的例子中,即使已经设置了 MAX_PARALLEL_DEGREE 默认值 3,但实际使
用的为 PARALLEL 指定的任务个数 4:
SELECT /+ PARALLEL(4) / * FROM SYSOBJECTS;
另外,每个语句中仅能设置一次并行任务个数,如果设置了多次,则以最后一次设置为
准,而且任务个数在全语句中生效。
例如,下面的例子中,使用的并行任务个数为 2。
SELECT /+ PARALLEL(1) //+ PARALLEL(2) */ * FROM SYSOBJECTS;
这种方式能够为单条查询语句设置额外的并行任务个数,以此来提高某些特殊查询任务
的性能。

22.8.3 确定并行工作线程数

在执行并行查询任务之前,您需要指定完成该任务的并行工作线程数。值得注意的是,
实际使用的线程数并非总是等于并行工作线程数。并行工作线程数是在 INI 参数中设定的,
实际使用并行工作线程数是根据系统的实际状况确定的。
1. 并行工作线程数,在 INI 参数中设定
首先,使用 PARALLEL_POLICY 参数来设置并行策略。取值范围:0、1 和 2,默认值
0。其中,0 表示不支持并行;1 表示自动并行模式;2 表示手动并行模式。
当开启本地并行(PARALLEL_POLICY>0)时,使用 PARALLEL_THRD_NUM 指定本地
并行查询使用的线程数,取值范围为 1~1024,缺省值为 10。需要注意的是,若
PARALLEL_POLICY=1,如果 PARALLEL_THRD_NUM=1, 则按照 CPU 个数创建并行线程。
例如,设置并行策略 PARALLEL_POLICY 为 2,即手动设置并行工作线程数;同时,
设置并行工作线程数 PARALLEL_THRD_NUM 为 4 个。
PARALLEL_POLICY 2
PARALLEL_THRD_NUM 4
当然,并非所有的查询都适合使用并行查询。大量占用 CPU 周期的查询最适合采用并
行查询的功能。例如,大型表的连接查询、大量数据的聚合和大型结果集的排序等都很适合
采用并行查询。对于简单查询(常用于事务处理应用程序)而言,执行并行查询所需的额外
协调工作会大于潜在的性能提升。所以,数据库管理员在确定是否需要使用并行策略的时候,
需要慎重。
2. 实际使用的线程数,达梦数据库会根据每个并行查询操作自动检测
实际使用线程数是数据库在查询计划执行时初始化的时候确定的。也就是说,这不需要
用户去干预,而是系统根据并行任务数和实际空闲的并行工作线程数来确定的。此操作所依
据的条件如下:首先,检测达梦数据库是否运行在具有多个CPU的计算机上。只有具有多个
CPU 的计算机才能使用并行查询。这是一个硬性的限制条件。其次,检测可用的空闲工作
线程是否足够。并行查询到底采用多少线程数,除了跟操作的复杂程度相关外,还跟当时的
服务器状态相关,如是否有足够的可用的空闲工作线程数量等。每个并行查询操作都要求一
定的工作线程数量才能够执行;而且执行并行计划比执行串行计划需要更多的线程,所需要
的线程数量也会随着任务个数的提高而增加。当无法满足特定并行查询执行的线程要求时,
数据库引擎就会自动减少任务个数,甚至会放弃并行查询而改为串行计划。所以,即使同一
个操作在不同时候可能会采用不同的线程数。
例如,即使设置并行工作线程数为4。而实际使用的线程数可能只有3个,或者更少。

22.8.4 执行查询

当以上内容确定好之后,数据库就会执行具体的查询任务。

22.8.5 使用场景

使用手动并行模式时,只需要在 INI 参数中设置好如下 2 个参数,然后执行并行 SQL
查询语句时,需手动指定当前并行任务个数。若不指定,将不使用并行。设置的 2 个参数
如下:
PARALLEL_POLICY 2
PARALLEL_THRD_NUM 4
使用自动并行模式时,一般指定如下三个参数:
MAX_PARALLEL_DEGREE 3
PARALLEL_POLICY 1
PARALLEL_THRD_NUM 10
另外,当 PARALLEL_POLICY 为 0 时,即使有并行任务,也不支持并行。
然后,执行语法格式类似―SELECT * FROM SYSOBJECTS;‖的并行 SQL 语句即可,
本条语句使用默认并行任务数 3。
当然,如果单条查询语句不想使用默认并行任务数,可以通过在 SQL 语句中增加 HINT,
通过―PARALLEL‖关键字来特别指定。此时,执行的并行 SQL 语句格式为―SELECT /*+
PARALLEL(SYSOBJECTS 4) */ * FROM SYSOBJECTS;‖,本条语句使用的并行任务数
为 4。







yangeoooo

并行查询–dba手册

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:05:32

PHP+MySQL VR全景源码系统,终身免费更新,快速创业与行业应用全指南

温馨提示&#xff1a;文末有资源获取方式开发基础&#xff1a;系统采用PHPMySQL这一成熟稳定的开发组合&#xff0c;确保高性能、高可靠性和易维护性&#xff0c;适合搭建商业级VR全景在线制作平台。源码获取方式在源码闪购网。终身更新特权&#xff1a;用户购买后获得终身免费…

作者头像 李华
网站建设 2026/4/16 0:25:18

LangFlow镜像发票生成功能:满足企业报销需求

LangFlow镜像驱动的智能发票生成&#xff1a;重塑企业报销自动化 在当今企业数字化转型的浪潮中&#xff0c;财务流程的智能化已成为提升运营效率的关键突破口。尤其是报销环节——这个看似简单却高频重复的场景&#xff0c;长期困扰着行政与财务人员&#xff1a;员工提交五花八…

作者头像 李华
网站建设 2026/4/15 21:54:31

【限时揭秘】:Open-AutoGLM电商监控系统的5层容灾架构设计

第一章&#xff1a;Open-AutoGLM电商库存自动监控在现代电商平台中&#xff0c;实时掌握商品库存状态是保障用户体验和运营效率的关键。Open-AutoGLM 是一款基于大语言模型与自动化脚本集成的开源工具&#xff0c;专为动态监控电商库存设计&#xff0c;能够自动抓取目标平台商品…

作者头像 李华
网站建设 2026/4/16 11:09:39

上海交大动手学大模型教程,快速入门LLM大模型(附课件)

前有 李沐 大神的动手学深度学习 现有 上海交大 的动手学大模型教程&#xff0c;对大模型感兴趣的直接冲&#xff01; 就在4月份上交大发布了动手学大模型教程&#xff0c;这份教程来自上海交大 《人工智能安全技术》 课程讲义拓展&#xff0c;教师是是张倬胜教授。 朋友们…

作者头像 李华
网站建设 2026/4/15 21:10:00

当论文遇上数据迷雾,宏智树AI如何成为你的“学术领航员”?

在数据的海洋中&#xff0c;最稀缺的不是数字&#xff0c;而是从数字中发现航向并清晰讲述故事的能力。 深夜的电脑屏幕前&#xff0c;一份满是数字的Excel表格、几个似是而非的图表草稿、一段对“p值是否显著”的反复纠结——这几乎是每一位进行实证研究的学生或学者都经历过的…

作者头像 李华
网站建设 2026/4/15 16:54:31

ADVANCE Day28

浙大疏锦行 &#x1f4d8; Day 28 实战作业&#xff1a;面向对象编程 (OOP) —— 深度学习的基石 1. 作业综述 核心目标&#xff1a; 从“面向过程”&#xff08;写流水账代码&#xff09;进化到“面向对象”&#xff08;设计模块化代码&#xff09;。 在深度学习中&#xf…

作者头像 李华