暂无图片
达梦数据库加并行是怎么加的?
我来答
分享
暂无图片 匿名用户
达梦数据库加并行是怎么加的?

达梦数据库加并行是怎么加的?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
EricOmer

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.

暂无图片 评论
暂无图片 有用 6
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
达梦管理工具修改存储过程就失去连接,这可能是什么问题?
回答 1
不应该啊,你是修改存储过程正常就断开还是修改后保存就会卡死断开?如果是后者,有可能是存储过程正在执行,不允许修改编译,出现卡死不响应断开的情况。
redis 双网卡怎么配?
回答 1
Redis双网卡的配置需要根据您的具体需求来进行。如果您想要让Redis服务器只监听其中一个网卡,可以在redis.conf文件中设置bind地址。例如,如果您想要让Redis服务器只监听IP为192
DM8异常关闭,重新启动时报错-713,查询文档说是SEQ错误,求助如何修改SEQ.
回答 4
单机试试把归档关闭后启动数据库,如果能正常启动,再重新开启归档。
临时表空间TEMP满了想重新建一个,怎么在共享存储下面创建?
回答 1
如果仅因为temp满了,可以调整一下大小。ALTERDATABASETEMPFILE‘XXCDATA/xxxxdb/tempfile/temp.256.1053294021’RESIZE10G;
kettle从接口取值,取到了清空表插入,取不到空操作能实现吗?
回答 1
已采纳
您好,可以是实现。试试【SQL文件输出】和【空操作(什么也不做)】这2个控件api。
达梦数据库时间格式化之后再分组就会报错吗?
回答 1
已采纳
达梦对标oracle,这个报错是因为groupby不能用别名。
提问:GBase8s虚拟列与oracle虚拟列有什么差异?
回答 1
@fontface{fontfamily:"TimesNewRoman";}@fontface{fontfamily:"宋体";}@fontface{fontfamily:"Calibri";}@li
数据库归档日志突然关,可以从哪个地方入手找原因?
回答 1
alert日志有记录开关的操作
有没有工具,可以把专业人员写的查询语句发布给普通员工用?
回答 2
已采纳
可以用svn,git等等
大神们在吗 咨询个细节 达梦 数据库密码有@ 关键字 通过 disql链接如何写?
回答 1
已采纳
在windows下,需要使用双引号将密码包含进来,同时对双引号使用\进行转移,具体例子如下:disqlSYSDBA/\"abcd@efgh\"@localhostlinux下,需要使用双引号将密码包含