OceanBase 外表 PARTITION_NAME 解答
截图视图:
DBA_OB_EXTERNAL_TABLE_FILES,记录外表和外部文件的映射关系OceanBase。
1. PARTITION_NAME 是什么?
-
非分区外表(普通外表,没有写
PARTITION BY):系统会默认填充固定值 P0。
这个P0只是逻辑占位分区名,不是真实存储分区,外表本身不会在 OB 内部生成 SSTable 物理分区,外表数据全部存在外部文件(CSV/Parquet 等),OB 本地不存表数据OceanBase。 -
分区外表(建表带
PARTITION BY):这里显示真实的分区名称(P0/P1 或者用户自定义分区名),每一个逻辑分区对应一批外部文件,可以支持分区裁剪。
截图里所有记录 PARTITION_NAME 全部是 P0,说明示例里全部是普通非分区外表。
2. 还会给外表分配一个分区吗?
-
普通外表(无 PARTITION BY):
视图显示 P0,但不会分配真实物理分区。OB 本地没有存储该表的数据,没有 SSTable,P0 只是视图层面的占位标记,仅用于视图字段对齐。 -
分区外表(建表写了 PARTITION BY):
才会产生真正逻辑分区,视图中出现多个不同 PARTITION_NAME,支持分区裁剪,但是依然不会在 OB 存储写入真实分区数据,数据还是外部文件。
1 个赞
