首批通过分布式安全可靠测评,为关键业务系统打造
MEMStore 为什么会存在 active 大于 total 现象
更新时间:2026-05-08 08:11
active 和 total 的含义如下。
- active:当前活跃的 MEMTable 的内存占用大小。
- total:当前所有 MEMTable 的内存占用大小。
按照字段的含义,理论上 total 是一定大于 active 的,但是也会存在如下 active > total 的异常现象。

造成以上异常现象的原因是 active 和 total 内存计算方式的不同。
- active:是按照最早未冻结的位点到当前活跃位点之间的区间内存总和计算的。
- total:是按照所有已分配未释放的内存总和计算的。
MEMStore 的内存是以 2M 为单位进行分配的,我们用 [] 表示一个 2M 的分配单元,active 与 total 的计算如下表格所示。
| 状态 | 内存分配示例 | 内存使用统计 |
|---|---|---|
| 未分配 | [未分配] [未分配] [未分配] [未分配] [未分配] | active=0, total=0 |
| 已分配 | [已分配] [已分配] [已分配] [未分配] [未分配] | active=3, total=3 |
| 分区转储1(未落盘) | [已分配] [已冻结] [已分配] [未分配] [未分配] | active=3, total=3 |
| 分区转储2(已落盘) | [已分配] [未分配] [已分配] [未分配] [未分配] | active=3, total=2 |
| 租户转储1(未落盘) | [已冻结] [已冻结] [已冻结] [已分配] [未分配] | active=1, total=4 |
| 租户转储2(已落盘) | [未分配] [未分配] [未分配] [已分配] [未分配] | active=1, total=1 |
适用版本
OceanBase 数据库 V2.x、V3.x 版本。