深入理解乐观锁与悲观锁-编程开发技术
深入理解乐观锁与悲观锁-编程 开发技术深入理解乐观锁与悲观锁原文出处:HollisChuang在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确 保在多个事务同时存取数据库中同
深入理解乐观锁与悲观锁-编程开发技术 深入理解乐观锁与悲观锁 原文出处: HollisChuang 在数据库的锁机制中介绍过,数据库管理系统中的并发控制的任务是确保在 (DBMS) 多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统 一性。 乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要釆用的技术手段。 无论是悲观锁还是乐观锁,都是人们定义岀來的概念,可以认为是一种思想。其实不仅 仅是关系型数据库系统中有乐观锁和悲观锁的概念,像、 memcachc.hibernatetair 等都冇类似的概念。 针对于不同的业务场景,应该选用不同的并发控制方式。所以,不要把乐观并发控制和 悲观并发控制狭义的理解为小的概念,更不要把他们和数据小提供的锁机制(行 DBMS 锁、表锁、排他锁、共享锁)混为一谈。其实,在中,悲观锁止是利用数据库 DBMS 本身提供的锁机制來实现的。 下面来分别学习一下悲观锁和乐观锁。 悲观锁 在关系数据库管理系统里,悲观并发控制(又名“悲观锁”, Pessimistic 缩写是一种并发控制的方法。它可以阻止一 ConcurrencyControl,"PCC”) 个事务以彩响其他用户的方式来修改数据。如果一个事务执行的操作都某行数 据应用了锁,那只有当这个事务把锁释放,其他事务才能够执行与该锁冲突的 操作。 悲观并发控制主要用于数据争用激烈的环境,以及发生并发冲突时使用锁保护 数据的成本要低于回滚事务的成本的环境中。 悲观锁,正如其名,它指的是对数据被外界(包插本系统当前的其他事务,以及來口外 部系统的事务处理)修改持保守态度(悲观),因此,在整个数据处理过程中,将数据 处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的 锁机制才能真正保证数据访问的排他性,否则,即使在本系统屮实现了加锁机制,也无 法保证外部系统不会修改数据) 在数据库中,悲观锁的流程如下:

