1.经常提交你的事务,小事务更少的倾向于冲突
2.以固定的顺序访问你的表和行,这样事务就会形成良好的查询并且没有思索
3.讲精心选定的索引添加到你的表中,这样你的查询就只需要扫描更少的索引记录,并且因此可以设置更好的锁定
4.不要把无关紧要的操作放到事务里面
5.尽量按照主键索引去查找记录,范围查找增加了锁冲突的可能性,也不要利用数据库去做一些额外的计算操作,比如
select .... where.... order by RAND(); 这样的语句用不到索引,因此将导致整个表中的数据都被锁住
6.优化SQL和表设计,减少同时占用太多资源的情况,减少连接的表,将复杂的sql分解为多个简单的sql
7.在并发比较高的系统中,不要显示的加锁,特别在事务里显示的加锁,如 select 。。。 for update 语句