1

我有一个关于悲观与乐观锁定的问题。每个人都说“当你不期望有很多冲突时使用乐观锁定。”,例如:

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

现在,我想知道/理解为什么存在这样的盈亏平衡点?悲观锁定怎么可能比乐观锁定更昂贵(在速度或内存使用方面?)?

我怀疑这是因为悲观锁定需要额外的读取操作。但是对于乐观锁定,这个额外的读取操作也是需要的(仅在保存操作之前),对吧?

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

4

1 回答 1

2

并发控制中的悲观与乐观是重新事务实现的干扰。(尽管您的链接或特定产品有任何定义。)

所谓的悲观态度是,有人会干涉,所以把他们拒之门外;所谓的乐观态度是,也许没有人会干扰,所以继续进行直到完成,如果有干扰,则回滚一些过程。

成本是由于锁定进程等待导致的延迟与回滚进程重新计算导致的延迟。我们希望在给定预期的工艺特性和分布的情况下优化吞吐量。

(在您的问题中,您只处理给定进程而不是集合,并忽略必须等待或不得不放弃回滚工作的进程。)

编辑

想想这些词是什么意思。吞吐量涉及工作和时间。“'收支平衡'点”假定了一个维度(干扰),在该维度上,数量(吞吐量)在方案之间有所不同(悲观/乐观)。你必须想出一种方法来表征和测量工作和干扰。您可以从教科书及其参考书目中看到其他人对测试的合理干扰。例如关于并发控制的乐观方法

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

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

于 2014-05-27T02:39:28.577 回答