悲观与乐观的并发控制

时间:2014-05-26 17:16:36

标签: database locking optimistic-locking pessimistic-locking

我有一个关于悲观与乐观锁定的问题。 每个人都说"当你不期待很多碰撞时会使用乐观锁定。例如:#/ p>

对于一个学校项目,我需要找到“收支平衡”。当悲观锁定比乐观锁定更合适时。

现在,我想知道/理解为什么存在这样一个收支平衡点?悲观锁定如何成本(在速度或内存使用方面?)然后乐观锁定?

我怀疑是因为悲观锁定需要额外的读操作。但是通过乐观锁定,还需要额外的读操作(仅在保存操作之前),对吗?

希望有人可以解释一下:) 谢谢!

1 个答案:

答案 0 :(得分:1)

Pessimissm vs并发控制中的乐观主义是对事务实现的干扰。 (尽管您的链接或特定产品表达了任何定义。)

假设的悲观态度是,有人会干涉,所以把他们锁起来;假设的乐观态度是,也许没有人会干涉,所以继续进行直到完成然后如果有干扰就回滚一些过程。

由于通过锁定流程等待由于回滚流程重新计算导致的延迟而导致成本延迟。我们希望根据预期的工艺属性和分布优化产量。

(在你的问题中,你只解决一个给定的进程而不是一个集合,并忽略一个必须等​​待或不得不抛弃回滚工作的进程。)

修改

想想这些词是什么意思。吞吐量涉及工作和时间。 “'收支平衡'点”假设一个维度(干扰),方案(悲观/乐观)之间的数量(吞吐量)不同。你必须想出一种表征和衡量工作和干扰的方法。您可以看到其他人采取合理的干扰来测试教科书和他们的书目参考。例如On Optimistic Methods for Concurrency Control

通过实验,计算在不同干扰量下运行DBMS的每个方案的吞吐量。

现实情况是,不同的干扰工作负载(>预期的过程属性和分布)使问题成为多维的。因此,您可能希望针对不同的干扰情况计算吞吐量。