---
title: 执行读写 SQL 时写入限速可能导致转储慢，无法释放冻结的 MemTable 的原因和解决方法-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于执行读写 SQL 时写入限速可能导致转储慢，无法释放冻结的 MemTable 的原因和解决方法相关的常见问题和使用技巧，帮助您快速解决执行读写 SQL 时写入限速可能导致转储慢，无法释放冻结的 MemTable 的原因和解决方法的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 执行读写 SQL 时写入限速可能导致转储慢，无法释放冻结的 MemTable 的原因和解决方法

更新时间：2026-06-12 08:51

适用版本： V1.4.x、V2.1.x、V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x、V4.3.x 内容类型：Troubleshoot  

## 问题现象

租户平时转储耗时 1 分钟，问题发生时租户转储耗时 17 分钟左右，虽然 Active MemStore 已经降低，但 Total MemStore 一直无法下降，导致持续发生写入限速。

![image](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/compaction-and-transfer/20241225memtable.png)

关键日志含有 `memtable last ref release too late` 信息，打印如下日志，对应的分区当时有执行读写 SQL，且同时打印写入限速日志 `report write throttle info` 则可以确认发生了此问题。

```shell
[2024-08-08 05:17:34.329945] WARN  [STORAGE] release_table (ob_table_mgr.cpp:317) [2728989][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=5] [dc=0] memtable last ref release too late(key={table_type:0, pkey:{tid:1108307720851520, partition_id:4, part_cnt:0}, table_id:1108307720851520, trans_version_range:{multi_version_start:1723053610548930, base_version:1723053610548930, snapshot_version:1723064435711480}, log_ts_range:{start_log_ts:0, end_log_ts:1723064435711480, max_log_ts:1723064436142584}, version:"0-0-0"}, minor_merged_time=1723064492190240, release_time=1723065454329884, lbt()="0xeed32b0 0x93821fc 0xaa4bcd0 0xaa4b1fc 0xaa4afac 0xaa4abd4 0x995d944 0xaa4a7e8 0xaa1ebf8 0xaa1eb0c 0xaa1ea30 0xaa1e710 0xaa1e0e4 0xaa1df68 0xaa1df34 0xaa1df34 0xaa1df34 0xa9f6c50 0xaa1c6b0 0xa9eac74 0xa9e6344 0xa9e3e20 0xa9e22d0 0xb2a6ee8 0xa9e19e4 0xb2a4574 0xa9dd310 0xb2a4b14 0xedae470 0xedae2b4 0xf04badc")

```

## 问题原因

写入限速可能导致冻结且已经刷盘完毕的 MemTable 无法释放，而 MemTable 不释放则 MemStore 内存水位也无法下降，写入限速无法解除，造成循环依赖。

对于一条既有写入又有读取的慢 SQL（例如 MERGE INTO），迭代器需要边读边写，当发生写入限速后，写迭代器被限速，也会同步阻塞读迭代器，此时读迭代器正在读取的数据将会持有 MemTable 的引用不释放。

当 MemTable 的引用无法释放后，就无法释放销毁冻结的 MemTable，内存水位无法下降（Total MemStore 高），写入限速也会难以解开，造成循环依赖，最终需要等待 SQL 超时或事务回滚后问题消失，MemTable 成功释放。没有发生写入限速就不会引发此问题，同样的若 SQL 只有读或者只有写，也不会引发此问题。

## 问题的风险及影响

MemStore 内存无法释放，写入限速无法解开，此租户下所有 DML 语句都将受到影响变慢。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。

## 适用版本

OceanBase 数据库所有版本。

## 解决方法及规避方式

- 解决方法：

  使用 kill session 方法杀死持有引用的慢 SQL 对应的会话，释放 MemTable 上的引用。
 - 规避方式：

  调大租户内存上限，降低 Freeze Trigger 转储阈值，避免写入限速发生。

Previous

[OceanBase 数据库 V2.x/V3.x 版本因为冻结版本号信息被回收导致合并超时失败](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003936999)

Next

[共享存储模式下合并丢数据](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002381936) ![有帮助](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) 咨询热线
