1. 同一个业务内的sql操作锁占用的锁,都是在业务提交的时分开释,因而独占锁尽量放在后边
2.not in,like 前匹配,or不支撑索引
3.业务能够设置折返点,呈现问题,能够跳回到折返点
4.尽量不要服务层调用服务层,由于锁的开释机遇是业务提交的时刻,因而要防止长业务,尽量确保短业务,削减锁占用时刻。
5.myisam虽然是表等级的锁,可是支撑并发刺进,即一个进程在读表的进程,从表尾刺进,concurrent_insert默以为1,设置成2则即便读的表中心有被删去的职业能够并发刺进
6.InnoDB与MyISAM的最大不同有两点:一是支撑业务,二是选用了行级锁
7.MyISAM选用表等级的锁,不会呈现死锁的状况,且锁分为读锁和写锁,读锁可重入,读写锁之间是互斥的。且在等候锁的时分,一起有等候写锁和读锁,写锁会优先分配锁(默许状况下,可经过装备修正)
8.InnoDB呈现死锁的处理方法是将导致死锁的且持有较少排它锁的业务回滚。
9.一个业务中假如有更新操作,应该直接请求排他锁,而不是先请求同享锁,后边更新又请求排他锁,假如两头业务一起具有同享锁,而又都去对同一行请求排他锁,都在等候对方的同享锁开释,则会呈现死锁的状况。
10.同享锁,排他锁是innodb读写数据要请求的锁,只要阻隔等级为可重复读以上才会请求同享锁,意向同享锁,意向排他锁是请求同享锁和排他锁的锁(innodb主动加上的锁)
11. InnoDB完成行锁是经过给索引加锁完成的,假如sql句子没有射中索引,那么将运用表锁。
12. 空隙锁,mysql为处理幻读呈现的锁,可重复读等级以上会请求这个锁,mysql会对契合条件的数据加上锁,当业务a经过耨个条件去查询到一批数据的时分,会加上一个空隙锁,这时业务b往这批契合条件的数据进行修改或新增契合这个条件的数据都会被挡住,需求等候锁,多个条件时依据哪几个条件要看详细射中的索引,依据射中的索引加锁。
13.MVCC 经过版本号来操控需求回来的数据,进步并发才能。