---
title: "动态分区概述 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: 动态分区概述 动态分区是 OceanBase 数据库提供的一种自动管理分区的功能，允许表根据预设规则自动创建和删除分区，从而简化运维并适应数据增长或过期的需求。 功能特性 根据 TIME_UNIT （如小时、天、月等）定期创建新分区，确保数据按时间范围自动扩展。 分区边界基于时间单位（如 hour 、 day ）划分…
---
切换语言

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

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

# 动态分区概述

更新时间：2026-04-27 14:53:19

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

动态分区是 OceanBase 数据库提供的一种自动管理分区的功能，允许表根据预设规则自动创建和删除分区，从而简化运维并适应数据增长或过期的需求。

## 功能特性

- 根据 `TIME_UNIT`（如小时、天、月等）定期创建新分区，确保数据按时间范围自动扩展。

     - 分区边界基于时间单位（如 `hour`、`day`）划分，适用于按时间序列存储数据的场景（如日志、交易记录）。
 - 通过 `PRECREATE_TIME` 预创建未来分区，避免因数据突增导致的分区不足问题。
 - 根据 `EXPIRE_TIME` 定期清理过期分区，释放存储空间。
 - 支持自定义时区（`TIME_ZONE`），确保跨时区数据的一致性。
 - 支持 `bigint` 类型时间戳的精度配置（如 `BIGINT_PRECISION`），适配不同时间精度需求。

### 预创建分区

在执行动态分区管理时，系统会间隔 `TIME_UNIT` 创建分区，直到最大分区边界超过 `now() + precreate_time`，创建的第一个分区边界为现存最大分区边界按 `TIME_UNIT` 向上取整。

**示例如下：**

创建表 `tbl1`：

```sql
CREATE TABLE tbl1 (col1 DATETIME)
    DYNAMIC_PARTITION_POLICY(
        ENABLE = true,
        TIME_UNIT = 'hour',
        PRECREATE_TIME = '3 hour',
        EXPIRE_TIME = '1 day',
        TIME_ZONE = '+8:00')
    PARTITION BY RANGE COLUMNS (col1)(
        PARTITION P0 VALUES LESS THAN ('2025-04-23 17:30:00')
        );

```

- 若现存最大分区边界大于当前时间 `2025-04-23 16:24:56`，调度一次动态分区管理后，分区为：

  ```sql
  PARTITION P0 VALUES LESS THAN ('2025-04-23 17:30:00'),
  PARTITION P2025042317 VALUES LESS THAN ('2025-04-23 18:00:00'),
  PARTITION P2025042318 VALUES LESS THAN ('2025-04-23 19:00:00'),
  PARTITION P2025042319 VALUES LESS THAN ('2025-04-23 20:00:00')

  ```
 - 若现存最大分区边界小于当前时间，预创建分区会尝试补充历史分区。例如现存最大分区为 `PARTITION P0 VALUES LESS THAN ('2025-04-23 15:30:00')`，当前时间为 `2025-04-23 16:26:56`，调度一次动态分区管理后，分区为：

  ```sql
  PARTITION P0 VALUES LESS THAN ('2025-04-23 15:30:00'),
  PARTITION P2025042315 VALUES LESS THAN ('2025-04-23 16:00:00'),
  PARTITION P2025042316 VALUES LESS THAN ('2025-04-23 17:00:00'),
  PARTITION P2025042317 VALUES LESS THAN ('2025-04-23 18:00:00'),
  PARTITION P2025042318 VALUES LESS THAN ('2025-04-23 19:00:00'),
  PARTITION P2025042319 VALUES LESS THAN ('2025-04-23 20:00:00')

  ```

  补充了历史分区 `P2025042315`。

### 预创建分区的名字

系统会根据分区边界值和 `TIME_UNIT` 确定自动生成的分区名，分区名前缀为 `P`。

| **TIME_UNIT** | **分区上界** | **分区名** |
| --- | --- | --- |
| hour | 2024-03-04 05:00:00 | P2024030404 |
| day | 2024-03-05 00:00:00 | P20240304 |
| week | 2024-03-11 00:00:00 | P2024_10（ISO 8601 第 10 周） |
| month | 2024-04-01 00:00:00 | P202403 |
| year | 2025-01-01 00:00:00 | P2024 |

### 删除过期分区

在执行动态分区管理时，系统会根据 `EXPIRE_TIME` 删除所有 **分区上界 < now() - expire_time** 的过期分区。

**示例如下：**

1. 创建表 `tbl2`。

   ```sql
   CREATE TABLE tbl2 (col1 DATETIME)
       DYNAMIC_PARTITION_POLICY(
           ENABLE = true,
           TIME_UNIT = 'hour',
           PRECREATE_TIME = '3 hour',
           EXPIRE_TIME = '6 hour',
           TIME_ZONE = '+8:00')
       PARTITION BY RANGE COLUMNS (col1)(
           PARTITION P0 VALUES LESS THAN ('2025-04-21 08:30:00')
           );

   ```
 2. 当前时间为 `2025-04-21 17:56:06`，调度一次动态分区管理后，分区为：

   ```sql
   PARTITION P0 VALUES LESS THAN ('2025-04-21 08:30:00'),
   PARTITION P2025042108 VALUES LESS THAN ('2025-04-21 09:00:00'),
   PARTITION P2025042109 VALUES LESS THAN ('2025-04-21 10:00:00'),
   PARTITION P2025042110 VALUES LESS THAN ('2025-04-21 11:00:00'),
   PARTITION P2025042111 VALUES LESS THAN ('2025-04-21 12:00:00'),
   PARTITION P2025042112 VALUES LESS THAN ('2025-04-21 13:00:00'),
   PARTITION P2025042113 VALUES LESS THAN ('2025-04-21 14:00:00'),
   PARTITION P2025042114 VALUES LESS THAN ('2025-04-21 15:00:00'),
   PARTITION P2025042115 VALUES LESS THAN ('2025-04-21 16:00:00'),
   PARTITION P2025042116 VALUES LESS THAN ('2025-04-21 17:00:00'),
   PARTITION P2025042117 VALUES LESS THAN ('2025-04-21 18:00:00'),
   PARTITION P2025042118 VALUES LESS THAN ('2025-04-21 19:00:00'),
   PARTITION P2025042119 VALUES LESS THAN ('2025-04-21 20:00:00'),
   PARTITION P2025042120 VALUES LESS THAN ('2025-04-21 21:00:00')

   ```
 3. 时间为 `2025-04-21 17:56:16`，再次调度一次动态分区管理后，分区为：

   ```sql
   PARTITION P2025042111 VALUES LESS THAN ('2025-04-21 12:00:00'),
   PARTITION P2025042112 VALUES LESS THAN ('2025-04-21 13:00:00'),
   PARTITION P2025042113 VALUES LESS THAN ('2025-04-21 14:00:00'),
   PARTITION P2025042114 VALUES LESS THAN ('2025-04-21 15:00:00'),
   PARTITION P2025042115 VALUES LESS THAN ('2025-04-21 16:00:00'),
   PARTITION P2025042116 VALUES LESS THAN ('2025-04-21 17:00:00'),
   PARTITION P2025042117 VALUES LESS THAN ('2025-04-21 18:00:00'),
   PARTITION P2025042118 VALUES LESS THAN ('2025-04-21 19:00:00'),
   PARTITION P2025042119 VALUES LESS THAN ('2025-04-21 20:00:00'),
   PARTITION P2025042120 VALUES LESS THAN ('2025-04-21 21:00:00')

   ```

   可以看到过期分区 `P0`、`P2025042108`、`P2025042109` 和 `P2025042110` 被删除。

## 注意事项

- 对于从 V4.3.5 BP2 之前版本升级上来的租户，执行 `DROP` 分区操作将导致全局索引失效。对于存在全局索引的表，谨慎使用删除过期分区功能。

  #### 说明

  对于 V4.3.5 版本，OceanBase 数据库从 V4.3.5 BP2 版本开始引入租户级隐藏配置项 `_ob_enable_truncate_partition_preserve_global_index`，用于控制是否允许在 `TRUNCATE`/`DROP` 主表分区（以下简称分区 DDL）时，全局索引不失效。

     - 对于升级上来的租户，该隐藏配置项默认值为 `False`，表示 `TRUNCATE`/`DROP` 主表分区，全局索引失效。
     - 对于新建租户默认值为 `True`，表示 `TRUNCATE`/`DROP` 主表分区，全局索引不失效。
 - 动态分区管理在调度失败时不会自动重试。为避免因连续调度失败导致新分区无法及时创建，进而造成数据写入失败，建议将 `PRECREATE_TIME` 设置为较大数值。
 - 集群升级期间禁止 DDL 操作，动态分区管理将暂停调度。建议根据预估升级时长，提前预建分区，覆盖升级窗口。
 - 修改分区键列类型、修改分区规则后，若新表 Schema 不满足动态分区管理限制，后续动态分区管理在这张表上的调度会失败。
 - 一次调度最多创建 2048 个分区。如果需要补充的历史分区过多，调度多次才能满足预创建时间。
 - 动态分区管理功能需要在后台发送 DDL 进行分区的创建和删除。为避免持续影响其他 DDL 操作，动态分区表数不宜过多。

## 相关文档

- [创建动态分区表](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479327)
 - [查看动态分区表](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479329)
 - [修改动态分区表](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479326)
 - [动态分区管理任务](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479325)

 上一篇 下一篇 ![有帮助](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) 咨询热线
