合理的使用数据库并行能力可以有效的提升数据的性能。
一、关于并行
本地并行查询(Local Parallel Query, LPQ) 是指利用一台数据库服务器的多个线程同时执行查询操作。只有当主机具有多个 CPU 内核时,开启 LPQ 才能提高查询任务的性能。
二、达梦数据库中并行的相关参数
三、参数解释
MAX_PARALLEL_DEGREE 参数用于控制单个查询最大开启的任务数量。
PARALLEL_POLICY 开启或关闭本地并行查询。
0 表示禁止 LPQ。
1 采用自动并行,即系统对任何一个 SQL 都试图使用LPQ,除非使用了 HINT 限制并行任务个数。
2 采用手动并行,即除非使用了 HINT 指定了并行任务个数,否则都不采用 LPQ。
当开启自动并行(PARALLEL_POLICY=1)时,参数 MAX_PARALLEL_DEGREE 生效,控制单个查询采用并行查询时最多使用的线程数。
MAX_PARALLEL_DEGREE 缺省值为 0,表示不并行,此时若指定参数对应的 HINT “PARALLEL”,则使用 HINT 值。
当开启手动并(PARALLEL_POLICY=2)时,参数 MAX_PARALLEL_DEGREE 失效,用户需要在语句中使用此参数对应的 HINT “PARALLEL”指定语句的最大并行任务数,否则不并行。
MAX_PARALLEL_DEGREE 要小于等于 PARALLEL_THRD_NUM 。 如果MAX_PARALLEL_DEGREE过大,会自动调整为等于 PARALLEL_THRD_NUM。
四、hit 并行语法
HINT 语法格式如下:
SELECT /*+ PARALLEL(4) */ * FROM SYSOBJECTS;
在执行并行查询任务之前,您需要指定完成并行查询的并行工作线程总个数。 并行工作线程总数是系统启动时,创建的并行工作线程的总个数,一般不超过 CPU 内核个数的 2 倍。
值得注意的是,实际使用的线程数并非总是等于并行工作线程总数。并行工作线程总数是在 INI 参数中设定的,实际使用并行工作线程数是根据系统的实际状况确定的。
并非所有的查询都适合使用并行查询。大量占用 CPU 周期的查询最适合采用并行查询的功能。
例如,大型表的连接查询、大量数据的聚合和大型结果集的排序等都很适合采用并行查询。对于简单查询(常用于事务处理应用程序)而言,执行并行查询所需的额外协调工作会大于潜在的性能提升。所以,数据库管理员在确定是否需要使用并行策略的时候,需要慎重。
达梦技术社区地址:https://eco.dameng.com