You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
ByteHouse云数仓版

ByteHouse云数仓版

复制全文
下载 pdf
系统运维
删除分区
复制全文
下载 pdf
删除分区

ByteHouse 云数仓版支持唯一表 Unique Table 和普通表。其中唯一表支持通过 Delete Flag 对单条数据进行删除,而普通表不支持删除单条数据,仅支持删除分区下的数据。因此,需要删除普通表中的数据时,可以通过删除该数据所在的分区,再进行重新导入的方式实现。本文将介绍如何通过控制台和 SQL 语句两种方式删除分区。

控制台操作分区删除

在示例数据表(需有分区)中导入数据后,查看对应的数据库表(元数据可能有 5 分钟的刷新延迟),可以看到分区统计信息。本数据表使用的是按日进行分区。您也可以通过筛选条件对分区键进行细粒度搜索。
选择具体的分区键,在右上角删除数据,二次确认后即可删除对应的分区。
Image

通过 SQL 删除分区

您可根据表和分区的情况,执行以下 SQL 删除分区。

  • 唯一表

    删除分区命令

    功能说明

    alter drop partition 语句(推荐)

    删除分区,支持所有表,底层直接删除目录,性能好,建议优先使用。

    • 通用示例

      ALTER TABLE $database_name.$table_name DROP PARTITION '2024-10-09',DROP PARTITION '2024-10-08';
      
    • 根据条件删除分区

      ALTER TABLE $database_name.$table_name DROP PARTITION where `toDate(toStartOfDay(date1))` >'2024-10-06';
      

      说明

      DROP PARTITION where表达式必须包含完整的PARTION BY表达式,如果是复杂表达式,需要使用反引号(``)强制区分。toDate(toStartOfDay(date1)) 是PARTITION BY 后的项使用方式可参考建表语句。

    delete 语句(不推荐)

    删除数据为同步删除,底层是先查再删除,是追加文件的方式删除,消耗性能,并且只支持唯一表。
    示例如下:

    DELETE FROM $database_name.$table_name WHERE date1 = '2024-10-10';
    
  • 非唯一表

    删除分区命令

    功能说明

    alter drop partition语句(推荐)

    删除分区,支持所有表,底层直接删除目录,性能好,建议优先使用。

    • 通用示例

      ALTER TABLE $database_name.$table_name DROP PARTITION '2024-10-09',DROP PARTITION '2024-10-08';
      
    • 根据条件删除分区

      ALTER TABLE $database_name.$table_name DROP PARTITION where `toDate(toStartOfDay(date1))` >'2024-10-06';
      

      说明

      toDate(toStartOfDay(date1)) 是PARTITION BY 后的项使用方式可参考建表语句。

    alter delete(不推荐)

    删除数据为异步删除,不支持唯一表。
    示例如下。

    ALTER TABLE $database_name.$table_name DELETE WHERE k1 = 'a';
    

最近更新时间:2026.02.11 16:35:50
这个页面对您有帮助吗?
有用
有用
无用
无用