开放式并发处理和保守式并发
有下面三中并发 控制策略可供选择:
Ø什么都不做 –如果并发用户修改的是 同一条记录,让最后提交的结果生效(默认的行为)
Ø开放式并发 (Optimistic Concurrency) - 假定并发冲突只是偶尔发生,绝大多数的时候并 不会出现; 那么,当发生一个冲突时,仅仅简单的告知用户,他所作的更改不能 保存,因为别的用户已经修改了同一条记录
Ø保守式并发 (Pessimistic Concurrency) – 假定并发冲突经常发生,并且用户不能 容忍被告知自己的修改不能保存是由于别人的并发行为;那么,当一个用户开始 编辑一条记录,锁定该记录,从而防止其他用户编辑或删除该记录,直到他完成 并提交自己的更改
注意:在本节里,我们不讨论保守式并附的例子。保守 式并发控制很少使用,因为锁定如果没有完全释放,会妨碍其他用户进行数据更 新。例如,如果一个用户为了编辑而锁定某一条记录,但在解锁之前就离开了, 那么其他任何用户都不能更新这条记录,直到最初的用户返回并完成他的更新。 因此,使用保守式并发控制的地方,相应地会作一个时间限制,如果到达这个时 间限制,则取消锁定。例如订票网站,当用户完成他的订票过程时会锁定某个特 定的座位,这就是一个使用保守式并发控制的例子。
并发冲突可能存在于所有允许多用户同时更新或删除数据的应用程序里。如果不解 决这样的冲突,当两个用户同时更新同一条数据,无论谁最后得到“胜利 ”,都将覆盖掉另一个用户所做的更改。作为另一种选择,开发者可以实现 开放式并发控制(optimistic concurrency control),或者保守式并发控制 (pessimistic concurrency control)。开放式并发控制假定并发冲突很少发生 ,简单地否决一个会提起并发冲突的更新或者删除命名。保守式并发控制则假定 并发冲突频繁地发生,简单地拒绝某个用户的更新或者删除命令是不可接受的。 在保守式并发控制下,编辑一条记录涉及到锁定它,从而该记录被锁定时预防其 他用户的修改或删除。
欢迎添加我的公众号一起深入探讨技术手艺人的那些事!
如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!