DM数据库并行查询入门
Posted 小子宝丁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DM数据库并行查询入门相关的知识,希望对你有一定的参考价值。
并行查询
并行查询相关参数
开启并行查询
开启并行查询
注意:并行查询参数 PARALLEL_POLICY 是静态属性,修改后要重启数据库服务。
使用手动并行模式时,只需要在 INI 参数中设置好如下 2 个参数,然后执行并行 SQL 查询语句时,需手动指定当前并行任务个数。若不指定,将不使用并行。设置的 2 个参数 如下:
PARALLEL_POLICY 2
PARALLEL_THRD_NUM 4
使用自动并行模式时,一般指定三个参数,如下:
MAX_PARALLEL_DEGREE 3
PARALLEL_POLICY 1
PARALLEL_THRD_NUM 10
当开启自动并行(PARALLEL_POLICY=1)时,参数 MAX_PARALLEL_DEGREE 生效,
控制并行查询最多使用的线程数。MAX_PARALLEL_DEGREE 缺省值为 1,表示不并行。此时若指定参数对应的 HINT “PARALLEL”,则使用 HINT 值;
当开启手动并行(PARALLEL_POLICY=2)时,参数 MAX_PARALLEL_DEGREE 失效,
用户需要在语句中使用此参数对应的 HINT “PARALLEL”指定语句的并行度,否则不并行。
Linux 下操作DM服务的相关命令
# 查看数据库状态
service DmServiceDMSERVER status
# 重启DM数据库服务
service DmServiceDMSERVER restart
# 停、启用数据库服务
service DmServiceDMSERVER stop
service DmServiceDMSERVER start
检查并行查询参数是否生效
-- 查看 PARALLEL_POLICY
select para_name,para_value,para_type from v$dm_ini where = para_name 'PARALLEL_POLICY';
-- 查看 PARALLEL_THRD_NUM
select para_name,para_value,para_type from v$dm_ini where para_name = 'PARALLEL_THRD_NUM';
-- 查看 MAX_PARALLEL_DEGREE
select para_name,para_value,para_type from v$dm_ini where para_name = 'MAX_PARALLEL_DEGREE';
使用并行查询
/*+ PARALLEL([<表名>] <并行任务个数>) */
示例,当前表 test_01 的中数据量为1100000,聚集索引是 rowid 。
-- 不使用并行查询:耗时12.539
select * from test_01
order by rowid desc limit 10;
-- 使用并行查询,启用四个线程查询:耗时:8.348
select /*+ PARALLEL(4) */ * from test_01
order by rowid desc limit 10
使用场景
当然,并非所有的查询都适合使用并行查询。大量占用 CPU 周期的查询最适合采用并 行查询的功能。例如,大型表的连接查询、大量数据的聚合和大型结果集的排序等都很适合 采用并行查询。对于简单查询(常用于事务处理应用程序)而言,执行并行查询所需的额外 协调工作会大于潜在的性能提升。所以,数据库管理员在确定是否需要使用并行策略的时候, 需要慎重。
DM数据库文档
以上是关于DM数据库并行查询入门的主要内容,如果未能解决你的问题,请参考以下文章
STM32入门开发: LWIP网络协议栈移植(网卡采用DM9000)
Python入门-4控制语句:09循环代码优化技巧(重要)-zip()并行迭代
[工作积累] UE4 并行渲染的同步 - Sync between FParallelCommandListSet & FRHICommandListImmediate calls(代码片段