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

特性概述

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表的特性的支持。
  • 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列的值相同。

相关文档