Iceberg Procedures
StarRocks Iceberg Catalog 支持多种用于管理 Iceberg 表的存储过程,包括快照管理、分支管理、数据维护、元数据管理和表管理。
您必须具有相应的权限才能执行存储过程。有关权限的更多信息,请参见 Privileges 。
快照管理
回滚到快照
将表回滚到特定快照。此操作将表的当前快照设置为指定的快照 ID。
rollback_to_snapshot 语法
ALTER TABLE [catalog.][database.]table_name
EXECUTE rollback_to_snapshot(<snapshot_id>)
Parameters
snapshot_id: 您想要回滚到的快照 ID。
示例
将表回滚到 ID 为 98765 的快照:
ALTER TABLE iceberg.sales.order
EXECUTE rollback_to_snapshot(98765);
选择快照
选择特定的快照并将其应用到表的当前状态。此操作基于现有快照创建一个新快照,而原始快照保持不变。
cherrypick_snapshot 语法
ALTER TABLE [catalog.][database.]table_name
EXECUTE cherrypick_snapshot(<snapshot_id>)
Parameters
snapshot_id: 您要进行 cherry pick 的快照的 ID。
示例
ALTER TABLE iceberg.sales.order
EXECUTE cherrypick_snapshot(54321);
分支管理
将一个分支快速前移到另一个分支
将一个分支快速前移到另一个分支的最新快照。此操作会将源分支的快照更新为与目标分支的快照相匹配。
fast_forward 语法
ALTER TABLE [catalog.][database.]table_name
EXECUTE fast_forward('<from_branch>', '<to_branch>')
参数
from_branch: 您想要快进的分支。用引号将分支名称引起来。to_branch: 您想要将from_branch快进到的分支。用引号将分支名称引起来。
示例
将 main 分支快进到 test-branch 分支:
ALTER TABLE iceberg.sales.order
EXECUTE fast_forward('main', 'test-branch');
数据维护
重写数据文件
重写数据文件以优化文件布局。此过程合并小文件,以提高查询性能并减少元数据开销。
rewrite_data_files 语法
ALTER TABLE [catalog.][database.]table_name
EXECUTE rewrite_data_files
("key"=value [,"key"=value, ...])
[WHERE <predicate>]
Parameters
rewrite_data_files 属性
"key"=value 键值对,用于声明手动 Compaction 行为。请注意,您需要将 key 包含在双引号中。
min_file_size_bytes
- 说明:小数据文件的上限。Compaction 期间,将合并大小小于此值的数据文件。
- 单位:Byte
- 类型:Int
- 默认值:268,435,456 (256 MB)
batch_size
- 说明:每个批次中可以处理的最大数据大小。
- 单位:Byte
- 类型:Int
- 默认值:10,737,418,240 (10 GB)
rewrite_all
- 说明:是否在 Compaction 期间重写所有数据文件,忽略使用特定要求筛选数据文件的参数。
- 单位:-
- 类型:Boolean
- 默认值:false
batch_parallelism
- 说明:Compaction 期间要处理的并行批次数。
- 单位:-
- 类型:Int
- 默认值:1
WHERE clause
- Description: 用于指定参与 Compaction 的分区所使用的过滤条件。
示例
以下示例对 Iceberg 表 t1 中的特定分区执行手动 Compaction。这些分区由子句 WHERE part_col = 'p1' 表示。在这些分区中,小于 134,217,728 字节(128 MB)的数据文件将在 Compaction 期间合并。
ALTER TABLE t1 EXECUTE rewrite_data_files("min_file_size_bytes"= 134217728) WHERE part_col = 'p1';