悲观的方法

悲观的方法是一种并发控制算法的方法,在这种方法中,如果交易在未来的某个时间点上相互冲突,则会被延迟。它将数据库的记录锁定为更新访问,其他用户只能以只读的方式访问记录,或者必须等待记录被 “解锁”。由于死锁的风险,用悲观的并发方法对应用程序进行编程,在管理上可能会更加复杂和麻烦。

在执行悲观的方法时,首先执行验证操作,如果有一个验证与锁的兼容性一致,那么就只执行读、计算和写操作,即、

验证 -> 读取 -> 计算 -> 写入

在悲观的方法中,使用两种常见的锁定协议:

  • 两阶段锁定协议
  • 时间戳排序协议

乐观的方法

乐观的方法是一种并发控制算法的方法,它的基础是假设数据库上的操作冲突很少。最好是将这些事务运行到完成,并在它们提交之前检查冲突,这里也没有在执行事务时进行检查。这种方法不需要任何锁定或时间戳方法。在乐观的方法中,事务的执行没有任何限制问题,直到事务被提交。乐观的方法允许事务以非同步的方式进行,也允许在最后进行冲突检查。这种方法也被称为验证或认证方法。

在乐观的执行过程中,只做读取和计算操作而不进行验证,并在正确操作之前验证事务。

读取->计算->验证->写入

乐观方法的优点:

在乐观方法的事务中,当联系人在那里时,回滚变得非常容易。
在乐观方法中,不会发现任何级联回滚,因为它只使用数据的本地拷贝而不是数据库。

乐观方法的缺点:

使用乐观的方法进行并发控制会非常昂贵,因为它需要回滚。
如果在这种方法中,大事务和小事务之间存在冲突,那么只有大事务会被反复回滚,因为它们包含更多的冲突。

悲观的方法和乐观的方法之间的区别:

悲观的方法 乐观的方法
它锁定了记录,这样所选择的更新记录就不会被另一个用户同时改变。 它不锁定记录,因为它确保记录在SELECTSUBMIT操作之间没有被改变。
在这种方法中,事务之间的冲突非常大, 与悲观的方法相比,事务之间的冲突较少。
事务的同步是在事务执行的生命周期的开始阶段进行的。 事务的同步是在事务执行的后期阶段进行的,或者在事务执行过程中被延迟。
它在设计和编程中很简单。 在设计和管理死锁的风险方面比较复杂。
它的存储成本较高 与悲观主义方法相比,它的存储成本相对较低。
它的并发程度较低 它的并发程度较高。
这种方法适用于交易冲突较多的地方 这种方法适用于交易冲突较少或非常罕见的地方。

交易阶段的流程:

验证 -> 读取 -> 计算 -> 写入

交易阶段的流程:

读取 -> 计算 -> 验证 -> 写入

它有助于保护系统免受并发冲突的影响 它允许冲突的发生
适用于小型数据库或记录较少的表 适用于大型数据库或有较多记录的表

DBMS中悲观方法和乐观方法的区别

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:DBMS中悲观方法和乐观方法的区别
本文链接:https://www.vsdiffer.com/vs/difference-between-pessimistic-approach-and-optimistic-approach-in-dbms.html
免责声明:以上内容仅代表 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。