达梦数据库并行查询

1 并行查询

并行查询技术可以使单个 SQL 语句能利用多个 CPU 和磁盘设备的处理能力,可以通过多个线程来处理查询任务,从而提高查询的效率。
  达梦数据库为具有多个 CPU 的数据库服务器提供并行查询的功能,以优化查询任务的性能。数据库服务器只有具有多个 CPU,才能使用并行执行查询操作,来提高查询任务的速度。
并行查询相关参数见下表:
在这里插入图片描述

2 确定并行任务个数

当开启自动并行(PARALLEL_POLICY=1)时,参数 MAX_PARALLEL_DEGREE 生效,控制并行查询最多使用的线程数。MAX_PARALLEL_DEGREE 缺省值为 1,表示不并行。此时若指定参数对应的 HINT “PARALLEL”,则使用 HINT 值;
  当开启手动并行(PARALLEL_POLICY=2)时,参数 MAX_PARALLEL_DEGREE 失效,用户需要在语句中使用此参数对应的 HINT “PARALLEL”指定语句的并行度,否则不并行。

3. 并行功能

3.1 查询数据库默认并行设置

SQL> select para_name,para_value from v$dm_ini where para_name='PARALLEL_POLICY';

行号     PARA_NAME       PARA_VALUE
---------- --------------- ----------
1          PARALLEL_POLICY 0

已用时间: 13.039(毫秒). 执行号:500.

3.2 调整并行参数

SQL> SP_SET_PARA_VALUE (2,'PARALLEL_POLICY',1);
DMSQL 过程已成功完成
已用时间: 3.395(毫秒). 执行号:501.
SQL> SP_SET_PARA_VALUE (1,'MAX_PARALLEL_DEGREE',4);
DMSQL 过程已成功完成
已用时间: 3.333(毫秒). 执行号:502.

3.3 重启数据库:
使用一般的 SQL 语句查询即可执行并行查询,不通过HINT指定默认也可以走执行计划:
#操作符:LOCAL COLLECT 表示本地并行下数据收集处理:

SQL> explain select * from sysobjects;

1   #NSET2: [1, 642, 396] 
2     #LOCAL COLLECT: [1, 642, 396]; op_id(1) n_grp_by (0) n_cols(0) n_keys(0) for_sync(FALSE)
3       #PRJT2: [1, 642, 396]; exp_num(17), is_atom(FALSE) 
4         #CSCN2: [1, 642, 396]; SYSINDEXSYSOBJECTS(SYSOBJECTS as SYSOBJECTS)
已用时间: 9.731(毫秒). 执行号:0.

4 使用“PARALLEL”关键字特别指定
  当 PARALLEL_POLICY=2 时,需要在 SQL 语句中通过“PARALLEL”HINT 指定并行度,否则不并行。
  若 PARALLEL_POLICY=1,则 SQL 语句中使用的“PARALLEL”HINT总是优先于 MAX_PARALLEL_DEGREE 参数设置。“PARALLEL”关键字的用法是在数据查询语句的 SELECT 关键字后,增加 HINT 子句来实现。
HINT 语法格式如下:
/*+ PARALLEL([<表名>] <并行任务个数>) */
在之前已经设置了 MAX_PARALLEL_DEGREE 默认值 4,但实际使用的为 PARALLEL 指定的任务个数 1(也就不用并行了):

SQL> explain select /*+ parallel(1) */ * from sysobjects;

1   #NSET2: [1, 642, 396] 
2     #PRJT2: [1, 642, 396]; exp_num(17), is_atom(FALSE) 
3       #CSCN2: [1, 642, 396]; SYSINDEXSYSOBJECTS(SYSOBJECTS as SYSOBJECTS)

已用时间: 0.723(毫秒). 执行号:0.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值