个人bibilailai(不喜请跳过):前几天参加的部门技术分享会,同事分享了一个内容为“提高接口性能的常见技巧”,个人觉得很有用,所以想在这里分享给大家,希望对刚入职场不久的兄弟姐妹们有所帮助。
1.避免大事物
大事务:有事务的方法的运行时间比较长,长时间未提交的事务。
1.1 大事务产生的原因
- 操作的数据比较多
- 大量的锁竞争
- 事务中有其他非DB的耗时操作
1.2 大事务造成的影响
- 并发情况下,数据库连接池容易被撑爆
- 锁定太多的数据,造成大量的阻塞和锁超时,甚至导致死锁
- 执行时间长,容易造成主从延迟
- 回滚所需要的时间比较长
- undo log膨胀
1.3 例子
反例:
@Transactional(rollbackFor=Exception.class)
   public void save(Req req) {
         checkParam(req);
         saveData1(req);
         updateData2(req);
   }
   private void checkParam(Req req){
       Data1 data = selectData1();
       Data2 data2 = selectData2();
       if(data.getSomeThing() != STATUS_YES){
          throw new BusinessTimeException(.....);
       }
   }优化思路










