更新时间:2026-07-28 GMT+08:00
技术原理
单节点表与节点组(Node Group)
- 基础绑定规则
- 版本升级兼容性规范(从低版本升级至507.0版本)
- 升级预检阶段:
- 升级执行阶段:
- 自动为所有'D'类型数据节点(DN),生成合规的单节点组Node Group。
- 命名规则:sys_single_group${seq}(如:DN2对应sys_single_group2)。
- 建立元数据映射关系,确保表的级联关联。
单节点表支持DDL核心机制
- 在单节点表配置中,存在两个关键reloptions配置选项:
- is_single_node:用于标识该表是否为单节点表。
- is_only_meta:用于标识当前数据节点(DN)是否仅存储元数据,而不存储实际数据。
在仅存储元数据的数据节点上对单节点表执行DML操作:
- 如果操作中的表达式不为false或无法直接优化为false(如:对带有NOT NULL约束的列执行IS NULL条件判断)时,系统将报错。
- 如果操作中的表达式本身就是false或可以直接优化为false时,系统不会报错,而是返回空结果。
- 单节点表的创建策略由以下GUC参数协同控制:
- single_node_table_strategy:定义创建单节点表的行为。
- default_nodegroup:指定创建Schema时默认设置单节点属性的功能。
参数的具体使用请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 单节点表”章节。
- 仅支持单节点表与分布表在线相互转换。
单节点表支持DML核心机制
- 单节点表复用复制表的分布式属性,主要涉及SQL解析器、优化器、执行器适配。
- SQL引擎在完成语法解析生成语法树后,进入语义解析阶段。语义解析负责对语法树进行语义检查(验证表存在性、列数据类型兼容性等语义规则)并构建单节点表的范围表,最终生成逻辑查询树(构建查询树时识别表类型(单节点/分布式)及其所属Node Group)。
- 单节点表分布式计划支持语句下推(LightProxy、FQS)、计划下推(Stream计划)、部分语句下推(XC计划)。判断SQL语句是否可直接下推DN:内部遍历查询树,对每个查询树节点获取待下推的节点执行列表,并获取表对应的分布信息。对于单节点表,可通过所属的单节点组Node Group控制执行的DN范围。如果SQL中包含的单节点表或其他非单节点表不在一个DN上(如:通过JOIN交互),由于两个表对应的节点执行列表不相同,无法合并到同一DN上,导致语句无法下推从而执行Stream计划。对于DML场景,会对源表和目标表的分布情况进行判断,如果不一致,会在源表上增加Stream节点。
父主题: 单节点表