更新时间:2026-07-28 GMT+08:00
分享

技术原理

单节点表与节点组(Node Group)

  • 基础绑定规则
    单节点表必须且只能创建在系统预置的单节点组Node Group上,具体要求如表1所示。
    表1 单节点组Node Group核心属性

    属性类别

    规范说明

    类型标识

    固定为's'类型。

    命名规则

    前缀强制为sys_single_group,后缀为数字序号(如:sys_single_group1、sys_single_group2)。

    成员限制

    仅包含1个数据节点(分片主DN),形成物理隔离的单点存储单元。

    创建方式

    系统为每个DN自动创建单节点组Node Group,单节点表必须创建在系统预置的单节点组Node Group上。

  • 版本升级兼容性规范(从低版本升级至507.0版本)
    • 升级预检阶段:
      • 冲突检测:

        扫描所有用户自定义的节点组Node Group,校验是否存在使用保留前缀sys_single_group的非法命名。

      • 处置策略:

        若存在冲突(即存在使用保留前缀sys_single_group的非法命名):立即终止升级流程,建议进行修改冲突的节点组。

        ALTER NODE GROUP sys_single_group_userdefined RENAME TO custom_group1;

        无冲突:通过预检,进入升级流程。

    • 升级执行阶段:
      • 自动为所有'D'类型数据节点(DN),生成合规的单节点组Node Group。
      • 命名规则:sys_single_group${seq}(如:DN2对应sys_single_group2)。
      • 建立元数据映射关系,确保表的级联关联。

单节点表支持DDL核心机制

  1. 在单节点表配置中,存在两个关键reloptions配置选项:
    • is_single_node:用于标识该表是否为单节点表。
    • is_only_meta:用于标识当前数据节点(DN)是否仅存储元数据,而不存储实际数据。

      在仅存储元数据的数据节点上对单节点表执行DML操作:

      • 如果操作中的表达式不为false或无法直接优化为false(如:对带有NOT NULL约束的列执行IS NULL条件判断)时,系统将报错。
      • 如果操作中的表达式本身就是false或可以直接优化为false时,系统不会报错,而是返回空结果。
  2. 单节点表的创建策略由以下GUC参数协同控制:
    • single_node_table_strategy:定义创建单节点表的行为。
    • default_nodegroup:指定创建Schema时默认设置单节点属性的功能。

    参数的具体使用请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 单节点表”章节。

  3. 仅支持单节点表与分布表在线相互转换。

单节点表支持DML核心机制

  1. 单节点表复用复制表的分布式属性,主要涉及SQL解析器、优化器、执行器适配。
  2. SQL引擎在完成语法解析生成语法树后,进入语义解析阶段。语义解析负责对语法树进行语义检查(验证表存在性、列数据类型兼容性等语义规则)并构建单节点表的范围表,最终生成逻辑查询树(构建查询树时识别表类型(单节点/分布式)及其所属Node Group)。
  3. 单节点表分布式计划支持语句下推(LightProxy、FQS)、计划下推(Stream计划)、部分语句下推(XC计划)。判断SQL语句是否可直接下推DN:内部遍历查询树,对每个查询树节点获取待下推的节点执行列表,并获取表对应的分布信息。对于单节点表,可通过所属的单节点组Node Group控制执行的DN范围。如果SQL中包含的单节点表或其他非单节点表不在一个DN上(如:通过JOIN交互),由于两个表对应的节点执行列表不相同,无法合并到同一DN上,导致语句无法下推从而执行Stream计划。对于DML场景,会对源表和目标表的分布情况进行判断,如果不一致,会在源表上增加Stream节点。

相关文档