1、将查询等数据准备操作放到事务外
2、事务中避免远程调用,远程调用要设置超时时间,防止事务等待时间过长。
3、事务中避免一次性处理太多数据,可以拆成多个事务来处理分多次处理(增加系统的并发性,给其他线程一个获取事务的机会)
4、更新等涉及加锁的操作尽可能放在事务靠后的位置
5、能异步处理的尽量异步处理
6、应用侧(业务代码)保证数据一致性,非事务执行(自己写sql的异常回滚逻辑)