---
title: OceanBase 数据库为何对分区数有限制 -OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库为何对分区数有限制 相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库为何对分区数有限制 的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase 数据库为何对分区数有限制

更新时间：2024-01-17 09:56

适用版本： V2.2.x 内容类型：TechNote  

OceanBase 数据库中，出于对性能的考虑对于分区数有一些建议。本文介绍分区数的建议以及计算方法。

对于 OceanBase V1.4.X 和 OceanBase V2.2.X 版本，建议单个节点的分区数目不超过 5 万，如果超过了这个数目，则建议对 OceanBase 集群进行扩容。对于单节点上分区数目限制的建议，主要是因为当一台物理机上的分区过多，会对系统造成以下影响。

- CLOG 主备 keep alive 的 RPC 开销增大。
 - 后台遍历分区的定时任务的开销增大。
 - 每个分区会占用系统内存，降低 OceanBase 集群性能。
 - 容灾场景下，系统恢复时间变长。

对于 OceanBase 数据库 V2.X 版本，还对每台物理机上的分区数目做出了限制，计算公式如下：

- OceanBase 数据库 V2.1.1 及以前的版本中，由于没有使用分区组（Partition Group，以下简称 PG），假设租户当前分区总数为 num，根据如下计算公式进行评估：

  其中 `partition_mem` 表示分区使用的内存，`num` 表示分区数量。

  ``partition_mem = 128 KB * num + ``max{1000, num/10}`` * 400 KB``

  #### 说明

  需要确保算出来的值不能超过租户可用内存上限，否则需调大租户内存规格。

  单机租户允许创建的最大分区数量为 ``(max_memory - memstore_limit``）/ partition_mem``。其中 `partition_mem` 表示分区使用的内存，`max_memory` 为创建租户时指定的最大内存，`memstore_limit` 表示 memstore 能够使用的内存上限。计算方式为 `memstore_limit_percentage * min_memory`，其中 `min_memory` 为创建租户时指定的最大内存，`memstore_limit_percentage` 为系统配置项，有关 `memstore_limit_percentage` 的详细信息，请参见《OceanBase 数据库 参考指南》中的 **配置项** 章节。
 - 对于 OceanBase 数据库 V2.2.X 及以后的版本，如果使用了 PG 功能，由于一个 PG 中可能包含很多分区，其内存开销要比普通的单个分区大，按每个 PG 预留 （528KB+1MB）内存来计算，根据系统已有的 PG 数量计算需要为 PG 预留的内存。

Previous

[OceanBase 3.x 版本单机分区数限制](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207651)

Next

[分区统计](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000466055) ![有帮助](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) 咨询热线
