更新时间: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')

相关文档