DM 大规模并行处理 MPP
达梦大规模并行处理 MPP(DM Massively Parallel Processing,缩写 DM MPP)是基于达梦数据库管理系统研发的完全对等无共享式集群组件,支持将多个 DM 数据库实例
组织为一个并行计算网络,对外提供统一的数据库服务。
基本概念
1.执行节点EP
DM MPP 系统中每一个运行的 DM 数据库服务器实例称为一个执行节点 EP,基于数据守护的 MPP 环境内的备库除外。
2.主,从EP
DM MPP 采用完全对等无共享架构,对整个系统来说,每个 EP 作用都是一样的,用户可以连接到其中的任何一个进行操作。而对每个用户会话来说,EP 具有主从之分。用户会
话实际连接的那个 EP 对该用户会话来说称为主 EP,其余的 EP 都称为从 EP。
3.数据分布
DM MPP 系统中的数据分布在各 EP 中,支持表数据的哈希分布、随机分布、复制分布、范围分布、LIST 分布类型,用户可根据应用的实际情况为表数据选择合适的分布类型。
哈希分布
哈希分布按照表定义中指定的一列或多列对行数据计算一个哈希值,再根据哈希值和哈希映射表,将该行数据分布到映射的节点上。
使用哈希分布时,节点间的数据是否均衡,取决于设置的哈希分布列以及表中的数据情况。当节点个数变动时,各个节点的数据需要按照新的哈希映射表重新进行分发。
随机分布
随机分布表不存在分布列,插入表数据时会按照一定的随机算法,将数据随机均衡分布到各个节点.
一般来说,随机分布对于复杂查询及存在较多的节点间数据分发情况,性能不如哈希分布高。
复制分布
复制分布表在每个节点上的本地数据都是一份完整的拷贝,查询该表数据时在任意节点上都能单独完成,不需要从其他节点获取数据。
复制分布一般用于数据量不是很大的表。
范围分布
范围分布按照表定义中指定的一个或多个列的列值范围分布项,决定将一行数据存储到MPP 的哪个相应 EP 上。
LIST 分布
LIST 分布通过指定表中的一个或多个列的离散值集,来确定将一行数据存储到 MPP 的哪个相应 EP 上。此分布用于表中列值可列举的情况。
4.MAL系统
MAL 系统是 DM 数据库实例间的高速通信系统,是基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。DM 通过 MAL 系统实现实例间的消息通讯。
5.全局连接和本地连接
MPP 系统中数据分布在各个 EP 中,用户只需要登录到某个 EP,系统自动建立这个 EP与其余 EP 的连接,因此用户建立的实际上是与整个 MPP 系统的全局连接,用户对数据库的
操作通过全局连接在 MPP 系统的所有 EP 进行。
使用全局连接时,要求 MPP 系统的所有 EP
都正常提供服务,否则无法建立连接。
DM MPP 也提供本地连接。当使用本地连接时,用户登录到某个 EP 后,这个 EP 不再建立与其余 EP 的连接,用户的所有数据库操作仅在这个 EP 上进行.
MPP并行执行计划
在 DM MPP 环境中各 EP 执行的是并行计划,并行计划是在单节点执行计划的基础上,按照一定规则于适当的位置插入 MPP 通讯操作符而生成的。
在 MPP 环境中,建表时指定的数据分布类型决定了表数据的分布。
哈希分布、范围分布和 LIST 分布的共同特征是在创建表的时候,用户指定一个或多个列作为分布列,系统会针对每个插入的数据行计算这些对应列的值,确定将数据所属 EP。
随机分布和复制分布则不需要指定分布列。
并行执行计划与数据分布密切相关,数据分布能够决定最终生成的并行计划。
相关配置文件
1.dm.ini
dm.ini 是 DM 数据库实例的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项。
配置项 | 配置含义 |
INSTANCE_NAME | 数据库实例名(长度不超过16个字符) |
PORT_NUM | DM服务器监听通讯端口号,服务器配置此参数,有效值范围 (1024~65534),发起连接端的端口在1024-65535之间随机分配 |
MAL_INI | MAL系统配置开关,0表示不启用MAL系统,1表示启用MAL系统, 默认值为0 |
MPP_INI | MPP系统配置开关,0表示不启用MPP系统,1表示启用MPP系统, 默认值为0 |
MAX_EP_SITES | MPP环境下EP节点的最大数量,有效值范围(2~1024),默认值为 64 |
MPP_HASH_LR_RATE | MPP下,对HASH JOIN节点,可以根据左右儿子CARD代价的比值, 调整HASH_JOIN的左右儿子的MOTION添加,从而影响计划。如果 CARD比值超过此值,则小数据量的一方全部收集到主EP来做。取值 范围(1〜4294967294),默认值为10 |
MPP_OP_JUMP | MPP系统中操作符的跳转开关,是否支持通讯操作符的跳转功能。1: 支持;0:不支持。取值范围:0、1,默认值为1 |
PHF_NTTS_OPT | MPP系统中是否进行NTTS计划的优化,打开时可能减少计划中的NTTS 操作符。1:支持;0:不支持。取值范围:0、1,默认值为1 |
配置项 | 配置含义 |
建库参数 | |
BLANK_PAD_MODE | 设置字符串比较时,结尾空格填充模式是否兼容ORACLE, 0:不兼容; 1:兼容。默认为0 |
LENGTH_IN_CHAR | VARCHAR类型对象的长度是否以字符为单位,0:否,以字节为单位; 1:是,以字符为单位。默认值为0 |
USE_NEW_HASH | 字符类型在计算HASH值时所采用的HASH算法类别,0:原始HASH 算法;1:改进的HASH算法。默认值为1 |
dm.ini参数 | |
COMPRESS_MODE | 建表时是否缺省压缩。0:不进行;1:进行。默认值为0 |
PARALLEL_POLICY | 用来设置并行策略。取值范围:0、1和2,缺省为0。其中,0表示不 支持并行;1表示自动并行模式;2表示手动并行模式。默认值为0 |
LIST_TABLE | 默认情况下,创建的表是否为堆表,0:否;1:是。默认值为0 |
COMPATIBLE_MODE | 是否兼容其他数据库模式。0:不兼容,1:兼容SQL92标准,2:兼 容 ORACLE,3:兼容 MS SQL SERVER,4 :兼容 MYSQL,5:兼容 DM6, 6:兼容Teradata。默认值为0 |
COUNT_64BIT | COUNT集函数的值是否设置为BIGINTo 0:否;1:是。默认值为1 |
ALTER_TABLE_OPT | 是否对加列、修改列、删除列操作进行优化,0:全部不优化;1:全 部优化;2:打开快速加列,对于删除列和修改列与1等效。默认值为 0 |
JSON_MODE | JSON语法解析兼容模式。0:兼容ORACLE; 1:兼容PostgreSQL。 默认值为0 |
-
dmmal.ini
dmmal.ini 是 MAL 系统的配置文件,此配置文件生效的前提是 dm.ini 中的参数MAL_INI 置为 1。使用同一套 MAL 系统的所有实例,MAL 系统配置文件要严格保持一致。
配置项 | 配置含义 |
MAL_CHECK_INTERVAL | MAL链路检测时间间隔,取值范围(0s-1800s),默认30s, 配置为0表示不进行MAL链路检测。为了防止误判,DMRAC集 群中,建议将配置值〉=DCR GRP NETCHK TIME。 |
MAL_CONN_FAIL_INTERVAL | 判定MAL链路断开的时间,取值范围(2s-1800s),默认10s |
MAL_LEAK_CHECK | 是否打开MAL内存泄露检查,0:关闭,1:打开,默认0 |
MAL_LOGIN_TIMEOUT | MPP/DBLINK等实例间登录时的超时检测间隔(3-1800),以 秒为单位,默认15s |
MAL_BUF_SIZE | 单个MAL缓存大小限制,以兆为单位。当此MAL的缓存邮件超 过此大小,则会将邮件存储到文件中。有效值范围(0~500000), 默认为100 |
MAL_SYS_BUF_SIZE | MAL系统总内存大小限制,单位:Mo有效值范围(0~500000), 默认为0,表示MAL系统无总内存限制 |
MAL_VPOOL_SIZE | MAL系统使用的内存初始化大小,以兆为单位。有效值范围 (1~500000 ),默认为128,此值一般要设置的比 MAL BUF SIZE 大一些 |
MAL_COMPRESS_LEVEL | MAL消息压缩等级,取值范围(0-10)。默认为0,不进行压缩; 1-9表示采用zip算法,从1到9表示压缩速度依次递减,压 缩率依次递增;10表示采用snappy算法,压缩速度高于zip 算法,压缩率相对低 |
MAL_TEMP_PATH | 指定临时文件的目录。当邮件使用的内存超过mal_buf_size 或者mal_sys_buf_size时,将新产生的邮件保存到临时文件 中。如果缺省,则新产生的邮件保存到temp.dbf文件中 |
[MAL_NAME] | MAL名称,同一个配置文件中MAL名称需保持唯一性 |
MAL_INST_NAME | 数据库实例名,与dm.ini的INSTANCE_NAME配置项保持一 致,MAL系统中数据库实例名要保持唯一 |
MAL_HOST | MAL IP 地址,使用 MAL HOST + MAL PORT 创建 MAL 链路 |
MAL_PORT | MAL监听端口,用于数据守护、DSC、MPP等环境中各节点实例 之间MAL链路配置,监听端端口配置此参数,范围1。24~65534, 发起连接端的端口在1024~65535之间随机分配 |
MAL_INST_HOST | MAL INST NAME实例对外服务IP地址 |
MAL_INST_PORT | MAL_INST_NAME实例服务器监听通讯端口号,服务器配置此参 数,有效值范围(1024~65534),发起连接端的端口在 1024-65535之间随机分配 此参数的配置应与dm.ini中的PORT NUM保持一致 |
MAL_DW_PORT | MAL_INST_NAME实例守护进程的监听端口,其他守护进程或监 视器使用MAL_HOST + MAL_DW_PORT创建与该实例守护进程 的TCP连接,监听端配置此参数,有效值范围(1024~65534), 发起连接端的端口在1024-65535之间随机分配 |
MAL_LINK_MAGIC | MAL链路网段标识,有效值范围(0-65535),默认0。设置此 参数时,同一网段内的节点都设置相同,不同网段内的节点设置 的值必须不一样 |
3.dmmpp.ctl
dmmpp.ctl 是 DM MPP 系统的控制文件,它是一个二进制文件,用户不能直接进行配置。用户需要首先配置 dmmpp.ini,然后利用 dmctlcvt 工具进行转换得到生成的
dmmpp.ctl 文件。MPP 系统中的每个 EP 都必须使用相同的 dmmpp.ctl 文件,进行文件拷贝即可。
配置项 | 配置含义 |
[SERVICE_NAME] | 标识MPP系统中每个EP实例的选项名 |
MPP_SEQ_NO | 实例在mpp系统内的序号,取值范围为0~1023 |
MPP_INST_NAME | 实例名 |