更新时间:2026-10-09 GMT+08:00
Paimon表存储过程管理
Paimon提供了丰富的存储过程(Procedures)用于表管理,可以通过CALL语句调用。
compact
- 功能:压缩数据文件,优化存储
- 参数:
- table(必填):目标表标识符
- partitions:分区过滤器,逗号表示AND,分号表示OR
- where:分区谓词(不能与partitions同时使用)
- order_strategy:排序策略(order/zorder/hilbert/none)
- order_by:排序列
- options:动态选项
- partition_idle_time:分区空闲时间
- compact_strategy:压缩策略(full/minor)
- 示例:
-- 基本压缩 CALL sys.compact(table => 'T') -- 指定分区压缩 CALL sys.compact(table => 'T', partitions => 'p=0;p=1') -- 排序压缩 CALL sys.compact(table => 'T', order_strategy => 'zorder', order_by => 'a,b') -- 使用where条件 CALL sys.compact(table => 'T', where => 'p>0 and p<3', order_strategy => 'zorder', order_by => 'a,b') -- minor压缩 CALL sys.compact(table => 'T', compact_strategy => 'minor')
compact_manifest
- 功能:压缩manifest文件,优化元数据存储
- 参数:
- table(必填):目标表标识符
- options:动态选项
- 示例:
CALL sys.compact_manifest(table => 'paimon.db.table');
purge_files
- 功能:清理表的所有数据文件
- 参数:
- table(必填):目标表标识符
- 示例:
-- 危险操作:会删除所有数据 CALL sys.purge_files(table => 'paimon.db.table');
expire_snapshots
- 功能:过期快照清理
- 参数:
- table(必填):目标表标识符
- retain_max:保留的最大快照数
- retain_min:保留的最小快照数
- older_than:删除此时间戳之前的快照
- max_deletes:一次删除的最大快照数
- options:动态选项
- 示例:
CALL sys.expire_snapshots(table => 'default.T', retain_max => 10)
rollback
- 功能:回滚到指定快照或标签
- 参数:
- table(必填):目标表标识符
- version:快照ID或标签名(已废弃)
- snapshot:快照ID
- tag:标签名
- 示例:
-- 回滚到标签 CALL sys.rollback(table => 'default.T', tag => 'tag1') -- 回滚到快照 CALL sys.rollback(table => 'default.T', snapshot => 2) -- 使用version参数 CALL sys.rollback(table => 'default.T', version => 'my_tag') CALL sys.rollback(table => 'default.T', version => 10)
rollback_to_watermark
- 功能:回滚到指定水位线对应的快照
- 参数:
- table(必填):目标表标识符
- watermark:水位线
- 示例:
CALL sys.rollback_to_watermark(table => 'default.T', watermark => 1730292023000)
create_tag
- 功能:基于快照创建标签
- 参数:
- table(必填):目标表标识符
- tag(必填):标签名
- snapshot:快照ID
- time_retained:标签保留时间
- 示例:
-- 基于快照10创建标签 CALL sys.create_tag(table => 'default.T', tag => 'my_tag', snapshot => 10, time_retained => '1 d') -- 基于最新快照创建标签 CALL sys.create_tag(table => 'default.T', tag => 'my_tag')
create_tag_from_timestamp
- 功能:基于时间戳创建标签
- 参数:
- table(必填):目标表标识符
- tag(必填):标签名
- timestamp(必填):时间戳
- time_retained:标签保留时间
- 示例:
CALL sys.create_tag_from_timestamp(table => 'default.T', tag => 'my_tag', timestamp => 1724404318750, time_retained => '1 d')
delete_tag
- 功能:删除标签
- 参数:
- table(必填):目标表标识符
- tag(必填):标签名(多个用逗号分隔)
- 示例:
CALL sys.delete_tag(table => 'default.T', tag => 'my_tag')
rename_tag
- 功能:重命名标签
- 参数:
- table(必填):目标表标识符
- tag(必填):原标签名
- target_tag(必填):新标签名
- 示例:
CALL sys.rename_tag(table => 'default.T', tag => 'tag1', target_tag => 'tag2')
replace_tag
- 功能:替换已有标签的信息
- 参数:
- table(必填):目标表标识符
- tag(必填):标签名
- snapshot:快照ID
- time_retained:保留时间
- 示例:
CALL sys.replace_tag(table => 'default.T', tag => 'tag1', snapshot => 10, time_retained => '1 d')
expire_tags
- 功能:根据时间过期标签
- 参数:
- table(必填):目标表标识符
- older_than(必填):过期时间
- 示例:
CALL sys.expire_tags(table => 'default.T', older_than => '2024-09-06 11:00:00')
create_branch
- 功能:创建分支
- 参数:
- table(必填):目标表标识符
- branch(必填):分支名
- tag:标签名
- 示例:
CALL sys.create_branch(table => 'test_db.T', branch => 'test_branch') CALL sys.create_branch(table => 'test_db.T', branch => 'test_branch', tag => 'my_tag')
delete_branch
- 功能:删除分支
- 参数:
- table(必填):目标表标识符
- branch(必填):分支名(多个用逗号分隔)
- 示例:
CALL sys.delete_branch(table => 'test_db.T', branch => 'test_branch')
fast_forward
- 功能:分支快进到主分支
- 参数:
- table(必填):目标表标识符
- branch(必填):分支名
- 示例:
CALL sys.fast_forward(table => 'test_db.T', branch => 'test_branch')
expire_partitions
- 功能:过期分区清理
- 参数:
- table(必填):目标表标识符
- expiration_time:过期时间
- timestamp_formatter:时间戳格式化器
- timestamp_pattern:时间戳模式
- expire_strategy:过期策略(values-time/update-time)
- max_expires:最大过期数
- options:动态选项
- 示例:
CALL sys.expire_partitions(table => 'default.T', expiration_time => '1 d', timestamp_formatter => 'yyyy-MM-dd', timestamp_pattern => '$dt', expire_strategy => 'values-time')
mark_partition_done
- 功能:标记分区为完成状态
- 参数:
- table(必填):目标表标识符
- partitions(必填):分区(多个用分号分隔)
- 示例:
-- 标记单个分区 CALL sys.mark_partition_done(table => 'default.T', partitions => 'day=2024-07-01') -- 标记多个分区 CALL sys.mark_partition_done(table => 'default.T', partitions => 'day=2024-07-01;day=2024-07-02')
remove_orphan_files
- 功能:删除孤儿文件
- 参数:
- table(必填):目标表标识符(支持通配符 db.*)
- older_than:删除此时间之前的孤儿文件
- dry_run:仅查看不删除
- parallelism:并行度
- mode:模式(local/distributed)
- 示例:
CALL sys.remove_orphan_files(table => 'default.T', older_than => '2023-10-31 12:00:00') CALL sys.remove_orphan_files(table => 'default.*', older_than => '2023-10-31 12:00:00') CALL sys.remove_orphan_files(table => 'default.T', older_than => '2023-10-31 12:00:00', dry_run => true)
remove_unexisting_files
- 功能:删除manifest中引用但不存在的文件
- 参数:
- table(必填):目标表标识符
- dry_run:仅查看不删除
- parallelism:并行度
- 示例:
CALL sys.remove_unexisting_files(table => 'mydb.myt') CALL sys.remove_unexisting_files(table => 'mydb.myt', dry_run => true)
reset_consumer
- 功能:重置或删除消费者
- 参数:
- table(必填):目标表标识符
- consumerId(必填):消费者ID
- nextSnapshotId:下一个快照ID
- 示例:
-- 重置消费者快照ID CALL sys.reset_consumer(table => 'default.T', consumerId => 'myid', nextSnapshotId => 10) -- 删除消费者 CALL sys.reset_consumer(table => 'default.T', consumerId => 'myid')
clear_consumers
- 功能:清理消费者
- 参数:
- table(必填):目标表标识符
- includingConsumers:包含的消费者(支持正则)
- excludingConsumers:排除的消费者(支持正则)
- 示例:
-- 清理所有消费者 CALL sys.clear_consumers(table => 'default.T') -- 清理指定消费者 CALL sys.clear_consumers(table => 'default.T', includingConsumers => 'myid.*') -- 排除指定消费者 CALL sys.clear_consumers(table => 'default.T', includingConsumers => '', excludingConsumers => 'myid1.*')
refresh_object_table
- 功能:刷新对象表
- 参数:
- table(必填):目标表标识符
- 示例:
CALL sys.refresh_object_table('default.T')
父主题: Paimon on Spark