---
title: 大 SQL 执行过程中因为限速，导致无法释放 MemTable，日志打印  memtable last ref rel 的原因及规避方式-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 大 SQL 执行过程中因为限速，导致无法释放 MemTable，日志打印  memtable last ref rel 的原因及规避方式相关的常见问题和使用技巧，帮助您快速解决 大 SQL 执行过程中因为限速，导致无法释放 MemTable，日志打印  memtable last ref rel 的原因及规避方式的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 大 SQL 执行过程中因为限速，导致无法释放 MemTable，日志打印 memtable last ref rel 的原因及规避方式

更新时间：2026-05-18 01:51

适用版本： V2.2.x、V3.1.x、V3.2.x 内容类型：Troubleshoot  

## 问题现象

用户执行大 SQL（同时包含大规模数据读取与写入）的场景下，触发限速，MemTable 无法释放，导致内存爆。当大 SQL 结束后，MemTable 才可以释放恢复。

## 关键诊断信息

### 触发条件

用户执行大 SQL (同时包含大规模数据读取与写入)。

### 事前巡检

OBServer 日志是否存在限速日志 `report write throttle info`。

### 事后诊断

OBServer 日志是否存在限速日志 `memtable last ref release too late`。

## 问题原因

写入限速导致的异常场景：对于一条既有写入又有读取的大 SQL，迭代器需要边读边写，当发生写入限速后，写迭代器被限速，也会同步阻塞读迭代器，此时读迭代器正在读取的数据将会 Hold MemTable 的引用无法释放。 当 MemTable 的引用无法释放后，就无法释放销毁冻结的 MemTable，内存水位无法下降，写入限速也会难以解开，造成循环依赖，最终 SQL 超时或事务回滚后问题消失。没有发生写入限速就不会引发此问题，同样的若 SQL 只有读或者只有写，也不会有问题。

## 问题的风险及影响

大 SQL 执行过程中, 可能存在 MemTable 无法释放导致内存爆的情况。

## 影响租户

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

## 影响版本

OceanBase 数据库 V2.2.77 GA（oceanbase-2.2.77-20210508211731）及之后版本、V3.1.2 GA（oceanbase-3.1.2-20210618150922）及之后版本、V3.2.2 GA（oceanbase-3.2.2-20211130225726）及之后版本、V3.2.4 GA（oceanbase-3.2.4.0-100000072022102819）及之后版本。

## 解决方法及规避方式

- 解决方法：

  重启或者等待事务超时回滚。
 - 规避方式：

  调大租户内存，但是为了防止大量 callback 导致的 bad case，要调小`freeze_tigger_percentage`。

Previous

[性能压测时 kprobe 内核探针导致 SYS 内核态 CPU 使用率过高](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000004048137)

Next

[带有 __all_virtual_ls_info 表的 SQL 比较消耗资源](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000005437443) ![有帮助](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) 咨询热线
