mybatis-plus 长sql执行缓慢问题

server/2024/11/14 12:32:01/

        说起这个问题,可把我坑苦了,这个问题一共找了两次,第一次是因为一个sql执行缓慢,我来排查原因,先后排除了sql本身的问题,网络问题,项目代码问题,数据库压力问题,最后问题定位在orm框架生成sql和把查询结果组装成po这一过程中,具体是那个地方一直没有确定,耗时一周,后来因为有其他任务,耗不起时间,就暂时搁置了。

        第二次排查这个问题,是因为另一个sql也执行缓慢,同样排除了上文中说的问题,但这次发现一个新的现象,就是sql越长需要的时间也越长,所以问题就划定在orm组装sql这一过程中。

        后来经过不懈努力,我终于找到了问题原因。我们使用mybatis-plus框架,其中有一段代码是这样的

private String getTableName(String sql) {Statement statement = null;try {//注意这一行statement = CCJSqlParserUtil.parse(sql);} catch (JSQLParserException e) {e.printStackTrace();}TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();List<String> tableList = tablesNamesFinder.getTableList(statement);if (CollectionUtils.isEmpty(tableList)) {return null;}return tableList.get(0);}

        这段代码主要是为了获取sql涉及的数据库表的名字,其中CCJSqlParserUtil.parse(sql)这一句耗时非常严重,在我的场景下需要800ms左右,我的场景是一个sql in查询,in查询本身执行时间20ms左右。
在这里插入图片描述
        我也没有太多的时间和精力从根本排查解决这个问题,所以选择了一个治标不治本的方法,就是尽量减小sql的长度。效果还不错。

        另外这位兄弟跟我的情况差不多,我也记录在这。https://blog.csdn.net/xuanzai666/article/details/134321479


http://www.ppmy.cn/server/140740.html

相关文章

安全篇(1)判断安全固件

判断安全固件的方法 一、通过串口开机打印 改方法适用Android与Tina 1.开机打印为SBOOT为安全 [289]HELLO! SBOOT is starting! 2.开机打印boot0为非安全 [88]BOOT0 commit : 1cbb5ea8b3 二、通过读数据 1.getprop | grep verifiedbootstate 这条命令的输出表示设备的…

Python 在PDF中绘制形状(线条、矩形、椭圆形等)

在PDF中绘制图形可以增强文档的视觉效果。通过添加不同类型的形状&#xff0c;如实线、虚线、矩形、圆形等&#xff0c;可以使文档更加生动有趣&#xff0c;提高读者的阅读兴趣。这对于制作报告、演示文稿或是教材特别有用。本文将通过以下几个示例介绍如何使用Python 在PDF中绘…

网络安全常见面试题--含答案

本文面试题汇总&#xff1a; 防范常见的 Web 攻击 重要协议分布层 arp协议的工作原理rip协议是什么&#xff1f;rip的工作原理 什么是RARP&#xff1f;工作原理OSPF协议&#xff1f;OSPF的工作原理 TCP与UDP区别总结 什么是三次握手四次挥手&#xff1f; tcp为什么要三次握手&…

【前端基础】CSS进阶

目标&#xff1a;掌握复合选择器作用和写法&#xff1b;使用background属性添加背景效果 01-复合选择器 定义&#xff1a;由两个或多个基础选择器&#xff0c;通过不同的方式组合而成。 作用&#xff1a;更准确、更高效的选择目标元素&#xff08;标签&#xff09;。 后代选…

【数学二】线性代数-矩阵-初等变换、初等矩阵

考试要求 1、理解矩阵的概念,了解单位矩阵、数量矩阵、对角矩阵、三角矩阵、对称矩阵、反对称矩阵和正交矩阵以及它们的性质. 2、掌握矩阵的线性运算、乘法、转置以及它们的运算规律,了解方阵的幂与方阵乘积的行列式的性质. 3、理解逆矩阵的概念,掌握逆矩阵的性质以及矩阵可…

web实操2——idea创建普通web项目

创建项目 方式一 方式二 就是普通的java项目&#xff0c;项目右键add framework support&#xff08;添加框架支持&#xff09;,然后点击Web Application&#xff08;web应用程序&#xff09;&#xff0c;然后点击OK。即可。 文件下就会多一个web文件夹&#xff0c;里面是WE…

STM32——毕设基于单片机的多功能节能窗控制系统

设计内容与研究 使用STM32 单片机作为控制器实现对多功能节能窗进行自动化控制&#xff0c;主要是实现节能减排功能。设计和实现硬件系统&#xff0c;包括STM32单片机、传感器、执行器和用户界面&#xff0c;以支持多功能窗控制。开发嵌入式软件&#xff0c;实现窗户状态的实时…

Webserver(5.2)网页服务器框架

目录 网页服务器服务器编程基本框架两种高效的事件处理模式reactor模式proactor模式同步IO模拟Proactor模式 网页服务器 接收、存储&#xff0c;处理来自客户端的HTTP请求&#xff0c;并对其请求做出HTTP响应。 Web服务器底层是基于tcp协议的&#xff0c;因为要保证数据安全。…