---
title: "Truncate 分区 - OceanBase 数据库 V4.3.4 | OceanBase 文档中心"
description: Truncate 分区 您可以根据业务需要，清空分区表中分区的数据，保留分区结构。 分区表对 Truncate 分区操作的支持情况 OceanBase 数据库的 MySQL 模式中，一级分区表和二级分区表对 Truncate 分区操作的具体支持情况如下表所示。 分区表 分区类型 Truncate 一级分区 Trunc…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.4

# Truncate 分区

更新时间：2024-10-31 23:00:00

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.4/zh-CN/700.reference/300.database-object-management/100.manage-object-of-mysql-mode/300.manage-partitions-of-mysql-mode/600.truncate-partition-of-mysql-mode.md)  

您可以根据业务需要，清空分区表中分区的数据，保留分区结构。

## 分区表对 Truncate 分区操作的支持情况

OceanBase 数据库的 MySQL 模式中，一级分区表和二级分区表对 Truncate 分区操作的具体支持情况如下表所示。

| 分区表 | 分区类型 | Truncate 一级分区 | Truncate 二级分区 |
| --- | --- | --- | --- |
| 一级分区表 | - Range - Range Columns - List - List Columns | 支持 | - |
| 一级分区表 | - Hash - Key | 不支持 | - |
| 二级分区表 | - Range + Range - Range + Range Columns - Range + List - Range + List Columns | 支持 | 支持 |
| 二级分区表 | - Range + Hash - Range + Key | 支持 | 不支持 |
| 二级分区表 | - Range Columns + Range - Range Columns + Range Columns - Range Columns + List - Range Columns + List Columns | 支持 | 支持 |
| 二级分区表 | - Range Columns + Hash - Range Columns + Key | 支持 | 不支持 |
| 二级分区表 | - List + Range - List + Range Columns - List + List - List + List Columns | 支持 | 支持 |
| 二级分区表 | - List + Hash - List + Key | 支持 | 不支持 |
| 二级分区表 | - List Columns + Range - List Columns + Range Columns - List Columns + List - List Columns + List Columns | 支持 | 支持 |
| 二级分区表 | - List Columns + Hash - List Columns + Key | 支持 | 不支持 |
| 二级分区表 | - Hash + Range - Hash + Range Columns - Hash + List - Hash + List Columns | 不支持 | 支持 |
| 二级分区表 | - Hash + Hash - Hash + Key | 不支持 | 不支持 |
| 二级分区表 | - Key + Range - Key + Range Columns - Key + List - Key + List Columns | 不支持 | 支持 |
| 二级分区表 | - Key + Hash - Key + Key | 不支持 | 不支持 |

## Truncate 一级分区

您可以 Truncate 分区表中的一级分区。

Truncate 一级分区的 SQL 语法如下：

```sql
ALTER TABLE table_name TRUNCATE PARTITION partition_name[, partition_name ...];

```

#### 说明

- Truncate 一级分区时，可以将一个或多个分区中的数据清空。
 - 在 Truncate 一级分区时，请尽量保证该分区上不存在活动的事务或查询，否则可能会导致 SQL 语句报错，或者出现一些异常情况。在 `sys` 租户下，通过视图 `oceanbase.GV$OB_TRANSACTION_PARTICIPANTS` 查询当前还未结束的事务上下文状态。
 - 对于二级分区表，Truncate 一级分区时，会将一个或多个一级分区及其对应的二级分区中的数据全部清空。

部分示例如下：

- 清空一级分区表 `tbl1_r` 中 `M202001` 和 `M202002` 分区中的数据。

  ```sql
  obclient> CREATE TABLE tbl1_r (log_id BIGINT NOT NULL,log_value VARCHAR(50),log_date TIMESTAMP NOT NULL)
         PARTITION BY RANGE(UNIX_TIMESTAMP(log_date))
          (PARTITION M202001 VALUES LESS THAN(UNIX_TIMESTAMP('2020/02/01'))
         , PARTITION M202002 VALUES LESS THAN(UNIX_TIMESTAMP('2020/03/01'))
         , PARTITION M202003 VALUES LESS THAN(UNIX_TIMESTAMP('2020/04/01'))
         , PARTITION M202004 VALUES LESS THAN(UNIX_TIMESTAMP('2020/05/01'))
         , PARTITION M202005 VALUES LESS THAN(UNIX_TIMESTAMP('2020/06/01'))
         , PARTITION M202006 VALUES LESS THAN(UNIX_TIMESTAMP('2020/07/01'))
         , PARTITION M202007 VALUES LESS THAN(UNIX_TIMESTAMP('2020/08/01'))
         , PARTITION M202008 VALUES LESS THAN(UNIX_TIMESTAMP('2020/09/01'))
         , PARTITION M202009 VALUES LESS THAN(UNIX_TIMESTAMP('2020/10/01'))
         , PARTITION M202010 VALUES LESS THAN(UNIX_TIMESTAMP('2020/11/01'))
         , PARTITION M202011 VALUES LESS THAN(UNIX_TIMESTAMP('2020/12/01'))
         , PARTITION M202012 VALUES LESS THAN(UNIX_TIMESTAMP('2021/01/01'))
          );
  Query OK, 0 rows affected

  obclient> ALTER TABLE tbl1_r TRUNCATE PARTITION M202001,M202002;
  Query OK, 0 rows affected

  ```
 - 清空 Range Columns + List Columns 分区表 `t_f_rclc` 的一级分区 `p0` 中的数据。

## Truncate 二级分区

Truncate 二级分区的 SQL 语法如下：

```sql
ALTER TABLE table_name TRUNCATE SUBPARTITION subpartition_name[, subpartition_name ...];

```

#### 说明

- Truncate 二级分区表中的二级分区时，请尽量保证该分区上不存在活动的事务或查询，否则可能会导致 SQL 语句报错，或者出现一些异常情况。在 `sys` 租户下，通过视图 `oceanbase.GV$OB_TRANSACTION_PARTICIPANTS` 查询当前还未结束的事务上下文状态。
 - 当 Truncate 多个二级分区时，这些二级分区必须属于同一个一级分区。

以清空 Range + Range 分区表 `t_f_rr` 的二级分区 `sp1` 和 `sp2` 中的数据为例，示例如下：

```sql
obclient> CREATE TABLE t_f_rr(col1 INT,col2 TIMESTAMP)
       PARTITION BY RANGE(col1)
       SUBPARTITION BY RANGE(UNIX_TIMESTAMP(col2))
        (PARTITION p0 VALUES LESS THAN(100)
           (SUBPARTITION sp0 VALUES LESS THAN(UNIX_TIMESTAMP('2021/04/01')),
            SUBPARTITION sp1 VALUES LESS THAN(UNIX_TIMESTAMP('2021/07/01')),
            SUBPARTITION sp2 VALUES LESS THAN(UNIX_TIMESTAMP('2021/10/01')),
            SUBPARTITION sp3 VALUES LESS THAN(UNIX_TIMESTAMP('2022/01/01'))
           ),
         PARTITION p1 VALUES LESS THAN(200)
           (SUBPARTITION sp4 VALUES LESS THAN(UNIX_TIMESTAMP('2021/04/01')),
            SUBPARTITION sp5 VALUES LESS THAN(UNIX_TIMESTAMP('2021/07/01')),
            SUBPARTITION sp6 VALUES LESS THAN(UNIX_TIMESTAMP('2021/10/01')),
            SUBPARTITION sp7 VALUES LESS THAN(UNIX_TIMESTAMP('2022/01/01'))
            )
         );
Query OK, 0 rows affected

obclient> ALTER TABLE t_f_rr TRUNCATE SUBPARTITION sp1,sp2;
Query OK, 0 rows affected

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
