在聊锁之前先了解事务,关系型数据库最大的特点是事务。事务保证一个单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务的4个重要特性如下:
原子性(Atomic):事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。
一致性(Consistency):事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。隔离性(Isolation):由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,到底是另一个事务执行之前的状态还是中间某个状态,相互之间存在什么影响,是可以通过隔离级别的设置来控制的。持久性(Durability):事务结束后,事务处理的结果必须能够得到固化,即写入数据库文件中即使机器宕机数据也不会丢失,它对于系统的影响是永久性的。数据库需要一种机制来保证并发的同时又能够保证操作满足事务的要求。这种机制就是锁。锁和并发之间既互为依存,又相互制约。锁粒度越大,并发越小,说粒度越小,并发越大,但同时需要耗费的资源也越多。
下面一张图了锁相关知识: