首批通过分布式安全可靠测评,为关键业务系统打造
工作区内存不足,错误代码 4013
更新时间:2026-05-08 06:21
在执行 UNION、SORT 或 GROUP BY 查询时报 4013 错误,提示工作区内存不足。本文介绍该问题的解决方法。
适用版本
OceanBase 数据库 1.4.x 版本。
问题现象
在执行 UNION、SORT 或 GROUP BY 查询时报错,错误信息如下。
obclient> SELECT * FROM <table_name> GROUP BY <column_name>;
ERROR 4013(HY001): No memory or reach tenant memory limit
可能原因
工作区内存的限制为 租户内存 * ob_sql_work_area_percentage,其中 ob_sql_work_area_percentage 用于配置租户执行 SQL 使用内存百分比限制,默认为 5,取值范围为 0 ~ 100。有关该系统变量的详细信息,参见 OceanBase 数据库《参考指南》中的 系统变量 章节。
如果请求并发量较大,且每个请求占用的工作区内存比较多,可能出现工作区内存不足的错误。对于大数据量的操作,OceanBase 数据库 V1.4.x 版本没有及时将内存 dump 到磁盘,而是全部缓存在工作区,因此并发量大的场景下,很容易出现不足。
OceanBase 数据库 V2.x 版本将非必须的内存从工作区转移到 Default Ctx 进行统计,并将执行结果 dump 到磁盘(默认为100 MB),从而大大降低了该问题出现的概率。
解决方式
可以通过调大工作区内存系统变量来规避,将系统变量 ob_sql_work_area_percentage 设置为 10 或者更大。
obclient> SET GLOBAL ob_sql_work_area_percentage=10;