- 索引 
  
- 没加索引(where条件字段、order by字段,常用字段添加索引)
 - 索引没生效
 - 选错索引
 
 - SQL优化 SQL数据库性能优化-CSDN博客
 - 远程调用 
  
- 并行调用
 - 数据异构
 
 - 重复调用 
  
- 循环查数据库
 - 死循环
 - 无限递归
 
 - 异步处理 
  
- 线程池
 - mq服务器(全称消息队列服务器)
 
 - 避免大事务(大事务引发的问题:死锁、锁等待、回滚时间长、接口超时、并发情况下数据库连接池被占满、数据库主从延迟) 
  
- 少用@Transactional注解
 - 将查询(select)方法放到事务外
 - 事务中避免远程调用
 - 事务中避免一次性处理太多数据
 - 有些功能可以非事务执行
 - 有些功能可以异步处理
 
 - 锁粒度 
  
- 加锁(synchronized),方法上加锁,代码块上加锁
 - redis分布式锁
 - 数据库分布式锁(数据库锁优化方向:优先使用行锁,其次使用间隙锁,最后使用表锁) 
    
- 表锁:加锁快,不会出现死锁,但锁定粒度大,发生锁冲突的概率最高,并发度最低
 - 行锁:加锁慢,会出现死锁,但锁定粒度最小发生锁冲突的概率最低,并发度也最高
 - 间隙锁:开销和加锁时间介于表锁和行锁之间,它会出现死锁锁定粒度介于表锁和行锁之间,并发度一般
 
 - 表锁:加锁快,不会出现死锁,但锁定粒度大,发生锁冲突的概率最高,并发度最低
 - 分页处理 
    
- 同步调用
 - 异步调用(多个线程异步调用远程接口,最后汇总结果统一返回)
 
 - 同步调用
 - 加缓存    
    
- redis缓存
 - 二级缓存
 
 - 分库分表
 - 辅助功能    
    
- 开启慢查询日志
 - 加监控(Prometheus)
 - 链路跟踪(skywalking)
 
 
 









