java SSM框架下,单接口访问速度过慢的原因

现在有个接口,直接测试是6s左右,逻辑程序都在几个毫秒之间,查询用了5s+.但是控制台打印了查询语句,用Navicat直接查该语句又在0.2s的样子,数据库是远程,就不知道哪个地方能优化orz,麻烦解答下

9个回答

个人觉得:
1.您的数据库连接数据远程,有一定可能与网络波动有关;
2.查询到的数据,经过mybatis的映射,在序列化和反序列化之间也会存在一定的时间消耗(亲测);
3.Navicat工具在查询之后,未对数据进行封装处理,速度自然比mybatis处理的快。
不用考虑的问题:
1.一般这种情况和sql查询没关系,但是sql在查询的时候和数据库之间也是会有毫秒级别的差异;数据量或者关联数据大的情况下,可能达到500ms的差异或者更大。

远程数据库的话 可能跟网络带宽有关 直接查询0.2s说明sql语句应该问题不大 可以用局域网数据库试试

应该是把结果集封装成Java对象耗时太多

本地开发的时候也用的是这个远程的数据库,所以配置的是远程服务器的ip,现在项目上线了,项目和数据库都在一个服务器上,是不是数据库的配置没改改成localhost?

可能有资源没有被释放

查一下慢sql日志看看是哪里速度慢了

你把查询的没一句话下面都输出一个当前时间,看看是哪一段代码耗时很长,然后研究那个代码 ,其实那里要么是查询语句问题,要么是封装返回值问题。

先写个JDBC测试下时间,确定一下是sql转换为对象的问题还是mybatis的问题,如果也是5秒以上,则表示你的sql转换的问题,看看是不是转换的对象过多,如果时间还是0.2秒左右,则表示你的mybatis读取可能有一一定的问题,根据实际情况修改下,或是这里不用mybatis。

主要两方面,第一要排除网络问题,第二就是查询语句有问题(尽量减少in等函数),我公司也是两台远程服务器,服务和数据库都是分开的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐