根据以往解决生产问题的经验,大结果集查询是生产环境系统OOM(Out Of Memory)异常的主要原因之一,一旦触发,系统将陷入缓慢甚至不可用状态,影响重大。
为什么会引发大结果集查询?
原因1:对生产数据规模预估不足;特别是对数据分布了解不充分,导致在某些条件下产生大查询;
原因2:非典型客户的交易频繁,记录结果日志庞大;
原因3:代码、程序bug引起的查询条件丢失,导致大查询
除了避免以上的情况,在mybatis的configuration.xml配置拦截器插件(自定义插件,基于MyBatis插件实现),实现对执行查询sql的拦截与改写,无侵入地实现对select查询语句的大结果集防护。