
# 特性概述
ROWID表是指包含ROWID/ROWNO系统列的表，ROWID不是普通的数据库列，而是一个伪列，表示表中每一行的唯一标识符。ROWID提供了对表中行的物理位置的直接访问，不需要在表中定义，每行数据自动拥有，不同表的ROWID可能重复，不支持通过INSERT/UPDATE/DELETE操作修改。本特性支持的ROWID表相关功能包括：
- ROWID表的创建、删除，包含CREATE TABLE AS、CREATE TABLE LIKE方式。
- 在ROWID表执行DML操作时，对ROWID/ROWNO系统列的维护。
- ROWID表的维护操作，包括VACUUM FULL、CLUSTER、ALTER TABLE SET TABLESPACE。
- 将非ROWID表转换为ROWID表，支持ALTER TABLE SET WITH ROWID。
- 对跨页透明压缩、闪回等其他使用到ROWID表的特性的支持。
![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- ROWID列包含表的节点以及tableoid信息，当表的分布、分区有变动时，ROWID列可能发生变化：
  - 分布式信息改变：如UPDATE分布列，扩容缩容场景下重分布表，单节点表与分布表互相转换。
  
  - 分区信息改变：如UPDATE分区键导致跨分区，分区表进行DDL操作（EXCHANGE、MERGE、SPLIT、MOVE）。
   
- 触发器类型变量不支持访问ROWID/ROWNO系统列。
- 若范围表（子查询）无ROWID属性，则查询报错，比如Dual表。
- 不支持直连DN节点场景下使用ROWID系统列。
- 往ROWID表中插入元组时（包括COPY INTO，VACUUM FULL等间接插入元组的场景），需要读取ROWNO系统列的序列，由于分布式场景下序列需要从GTM中获取，会造成性能劣化，在高并发场景下，性能劣化更加明显。
- 对ROWID表进行细粒度备份恢复时，不保证新表中ROWID列的值与原表中ROWID列的值相同。
 
