
# 技术原理
#### 单节点表与节点组（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）是否仅存储元数据，而不存储实际数据。
     ![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
     在仅存储元数据的数据节点上对单节点表执行DML操作：
     - 如果操作中的表达式不为false或无法直接优化为false（如：对带有NOT NULL约束的列执行IS NULL条件判断）时，系统将报错。
     
     - 如果操作中的表达式本身就是false或可以直接优化为false时，系统不会报错，而是返回空结果。
       
    
2. 单节点表的创建策略由以下GUC参数协同控制：
   - single_node_table_strategy：定义创建单节点表的行为。
   
   - default_nodegroup：指定创建Schema时默认设置单节点属性的功能。
   
   
   ![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
   参数的具体使用请参见《参考》中"数据库运行参数说明 \> 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节点。
 
