数据库中的锁机制

为什么会出现锁机制?

因为mysql是一个多用户可以访问的数据库,当多个用户并发的去存取同一份数据的时候,在数据库中就会出现多个事务同时存取同一份数据,如果对并发操作不加控制的话,就可能会出现存取数据的不一致.破坏数据库的一致性.可能产生死锁.为了解决这个问题,加锁是一个十分重要的机制.

解决方法:行级锁,表级锁,悲观锁,乐观锁.

行级锁:

表级锁:

悲观锁:是指对数据被外界修改保守为悲观状态,也就是一个事务去操作这个数据库中的数据的时候,都假想会有其他事务来操作这个数据库,所以在访问之前都会加锁.因此在当前事务操作数据的时候,都会处于锁定状态.   悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能 真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系 统不会修改数据)。 一个典型的倚赖数据库的悲观锁调用: select * from account where name=”Erica” for update 这条sql 语句锁定了account 表中所有符合检索条件(name=”Erica”)的记录。 本次事务提交之前(事务提交时会释放事务过程中的锁),外界无法修改这些记录。

乐观锁.乐观锁正好和悲观锁相反,每次有一个事务去操作这个数据库的时候,都会假想不会有其他事物来修改这些数据,所以在访问之前都不会加锁,只是会在进行数据的更新和修改的时候进行判断一下,

在当前事务访问期间数据是否发生了修改,

原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/10931756.html