
Java慢查询优化记录
Java慢查询优化记录
问题描述
打开页面后加载数据需要三秒,数据量不大。影响用户体验需要优化
问题定位
使用阿里开源的 arthas 工具,通过trace命令追踪查询的controller方法
安装arthas
安装包命令下打开cmd,执行java -jar arthas-boot.jar命令,输入对应的java进程的序号,启动arthas
cmd继续输入命令 或者 直接打开http://127.0.0.1:8563/ 页面进入控制台输入追踪命令:trace [类路径] [方法名] ,对方法进行追踪
触发对应的查询方法,可以看到方法耗时,找到耗时最长的方法继续追踪
最后追踪到mapper方法,count次数29次,占比98%,在整个方法中占比约70%
注:追踪为本地环境,与线上环境存在差异,故耗时不一致
查看对应的方法com.ruoyi.base.service.impl.GcProjectEntityServiceImpl.queryPredecessorTasks()
确认为在递归中执行数据库查询导致
解决方案
重构方法,将数据库查询方法抽取出来。减少数据库查询次数。
结果
代码上传,程序发布后,耗时下降至57.81毫秒
服务器上追踪了下,耗时61.59毫秒,提升大约 98% 的效率
避免类似问题
团队中宣导尽量不要在递归中执行数据库查询
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 zane
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果