数据库中的锁机制
为什么会出现锁机制?
因为mysql是一个多用户可以访问的数据库,当多个用户并发的去存取同一份数据的时候,在数据库中就会出现多个事务同时存取同一份数据,如果对并发操作不加控制的话,就可能会出现存取数据的不一致.破坏数据库的一致性.可能产生死锁.为了解决这个问题,加锁是一个十分重要的机制.
解决方法:行级锁,表级锁,悲观锁,乐观锁.
行级锁:
表级锁:
悲观锁:是指对数据被外界修改保守为悲观状态,也就是一个事务去操作这个数据库中的数据的时候,都假想会有其他事务来操作这个数据库,所以在访问之前都会加锁.因此在当前事务操作数据的时候,都会处于锁定状态. 悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能 真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系 统不会修改数据)。 一个典型的倚赖数据库的悲观锁调用: select * from account where name=”Erica” for update 这条sql 语句锁定了account 表中所有符合检索条件(name=”Erica”)的记录。 本次事务提交之前(事务提交时会释放事务过程中的锁),外界无法修改这些记录。
乐观锁.乐观锁正好和悲观锁相反,每次有一个事务去操作这个数据库的时候,都会假想不会有其他事物来修改这些数据,所以在访问之前都不会加锁,只是会在进行数据的更新和修改的时候进行判断一下,
在当前事务访问期间数据是否发生了修改,
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/p/10931756.html