理解乐观锁与悲观锁
DBMS中并发控制的任务是确保多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性 乐观锁和悲观锁是并发控制主要采用的技术手段。 无论是乐观锁还是悲观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库中有乐观锁和背锅所的盖面,其他很多地方都有类似的概念。 针对不同的业务场景,应该选用不同的并发控制方式,所以,不要把乐观锁和悲观锁下一的理解为DBMS中的概念,更不要把他们和数据库中提供的锁机制混为一谈。其实,在DBMS中,悲观锁正式利用数据库本身的锁机制来实现的。 悲观锁 在关系数据库中,悲观锁是一种并发控制的方法,它可以组织一个事务一影响其他用户的方式来修改数据。如果一个事务执行的操作嗾使某行数据应用了锁,那只有当这个事务把锁释放,其他事务才能够执行与该锁冲突的操作。 悲观锁主要用于数据征用激烈的环境,以及发生并发冲突时使用锁保护数据的成本要低于回滚事务的成本的环境中。 悲观锁指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往一句数据库提供的锁机制(也只有数据库层提供的锁机制擦能真正保证数据访问的排他性,否则,及时在本系统中实现了加锁机制,也无法保证外部系统不会修改数据) 在数据库中