大批量查询数据库大字段导致OOM问题
批量查询数据库大字段导致OOM问题
- 一、背景
- 二、解决方案
- 1、排查思路
- 2、优化结果
一、背景
业务上通过某任务id查询数据治理日志全部字段,其中待治理内容content字段超大。当某业务待治理的content数据存储较大时候,批量查询此数据,直接导致服务器内存利用率飙升,引发OOM问题,导致服务器自动重试重启。
二、解决方案
1、排查思路
(1) 查询数据库的大字段(text、blob、binary等),分析大字段的使用场景,是否涉及大批量查询等。
(2)查看大字段大小和查询列表的数据量,评估是否存在大批量数据单次读取。
(3)mysql查询方法
selecttable_schema,table_name,column_name,data_type,is_nullablecolumn_defaultcolumn_coment
frominformation_schema.columns
wheretable_schema = 'xxxxx'
and data_type in
('text','mediumtext','longtext','blob','mediumblob',
'longblob','binary','varinary','json');
2、优化结果
优化前:查询待治理内容content;
优化后:查询待治理id和治理结果id。