一次线上服务调用超时优化问题

原文:https://blog.csdn.net/qq_43511948/article/details/100545920

最近线上环境有个文件列表超时无响应
去数据库模拟查询后发现需要打约1200ms左右的时间,但是线上的服务调用超时时间设置的1000ms
改动之前逻辑是在一个for循环中会访问三次数据库,造成比较多的访问数据库开销

for( D d : list ) {
	....
	AEntity a = aDao.getById( bId );
	if( a!= null ) {
		....
		BEntity b= bDao.getById( aId );
		....
	}
	CEntity c= cDao.getById( bId );
	if( c!= null ) {
		....
	}
}

改动之后是在for循环里面只进行一次数据库访问,把逻辑放在数据库sql语句中
select * from table1 t1 left join table2 t2 on t1.aid = t2.aid left join table3 t3 on t1.bid= t3.bid where t1.bid= #{bid};
改完之后测试发现只需要600+ms,目的已达成
但是其中bid不属于主键,给bid加上一个唯一索引后直接起飞30-40ms即可

仅做一次记录,不一定对每个人有效果,要适合自己才是对的。

你可能感兴趣的:(调优)