首批通过分布式安全可靠测评,为关键业务系统打造
查询因客户端与服务端字符集不同导致的内存模块异常,报 No memory or reach tenant memory limit 4013
更新时间:2024-01-02 09:31
问题描述
使用 DataX 同步数据时当表总数据达到 1500W,800W 可以抽取,经过测试 1400W 会报错,报错信息如下。
No memory or reach tenant memory limit 4013
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
问题原因
当结果字符集和连接字符集不同时,需要进行字符集转换,使用的内存分配器来分配临时缓冲区,内存分配器在 query 结束时才会释放分配的内存,因此若内存分配器有问题,可能导致内存泄漏或内存错误。
解决方法
升级至问题已修复版本: 目前已修复的版本包括 OceanBase 数据库企业版 V2.2.77 BP12 (oceanbase-2.2.77-20220612090508) 及之后版本、V3.1.2 BP9 (oceanbase-3.1.2-20220727191622) 及之后版本、V3.2.3 BP2 (oceanbase-3.2.3.0-20220530152606) 及之后版本、V3.2.4 (oceanbase-3.2.4.0-100000072022102819) 及之后版本 V4.0.0.0 BP1 (oceanbase-4.0.0.0-101000022022120716) 及之后版本。
应急解决方法: 将连接字符集和租户字符集设置为相同的。