参考链接:http://blog.csdn.net/qwe6112071/article/details/50840870
1.死锁
1.1产生过程:多事务锁定一个资源->试图去锁定对方已锁定的资源->多事务处于等待对方释放锁资源状态,示意图如下所示:
1.2 防止方法
合理安排表访问顺序
对事务要求不高,允许脏读(不加锁)
错开多事务访问相同资源的时间
使用尽可能低的事务隔离级别
使用短事务(操作尽可能少,时间尽可能短)
将大事务分解成多个小事务顺序执行
2.悲观锁与悲观锁
悲观锁:显式为数据加锁,常见有如下两种加锁方式
显式指定独占锁:select … for update
在数据库增加表明状态的LOCK字段
乐观锁:通过版本控制实现,示意图如下所示:
通过乐观锁的版本控制,我们能够更好地提高并发事务的性能。