本文介绍目前 OceanBase 数据库产生 MemStore 限流逻辑(MemStore 限流会导致简单的 DML 语句变慢)。
详细说明
OceanBase 数据库 V2.x 与 V3.x 版本中 MemStore 触发限流的二个逻辑。
逻辑一: [MemStore 内存使用量 > MemStore 限流参数所设定的内存阈值],则触发限流。
逻辑二: [MemStore 内存设定上限 - MemStore 限流参数所设定的内存阈值] > [租户剩余内存租],则触发限流,这点的目的是避免租户内存不足导致 MemStore 内存无法按照预期进行正常分配,所以必须要求租户内存剩余量。
OceanBase 数据库 V4.0、V4.1、V4.2.1 版本中 MemStore 触发限流的一个逻辑。
逻辑一: [MemStore 内存使用量 > MemStore 限流参数所设定的内存阈值],则触发限流。
OceanBase 数据库 V4.2.5、V4.3.x 版本中 Memstore 触发限速的三个逻辑。
逻辑一: Memstore 本身占用的内存超过了限速阈值,Memstore 被限速。
逻辑二: TxData 或 Mds 模块占用内存较多,由于 Memstore 与这两个模块共享一个内存池,导致 Memstore 被限速。
逻辑三: Memstore、TxData、Mds 占用内存不多,但是其余所有模块占用较大内存,导致租户可用内存较少,进而导致 Memstore 被限速。
上述均为 Memstore 限速场景,同理 TxData、Mds 也可能被限速。在 TxData 被限速期间,事务开启会被延迟,TPS 也会受影响。
注意
在 OceanBase 数据库 V4.2.5 和 V4.3.x 版本中 MemStore 写入限流是新的逻辑。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V2.x、V3.x、V4.x 版本。