gpt4 book ai didi

optimistic-locking - 乐观并发控制和写入偏斜

转载 作者:行者123 更新时间:2023-12-04 15:44:15 27 4
gpt4 key购买 nike

我觉得问这个问题有点愚蠢,但为了把事情弄清楚,有时必须问一些愚蠢的问题:)

因此,我们可以像 Martin Kleppmann 在他的演讲中所做的那样定义写入偏差:

Write skew pattern:
1. read something
2. make a decision
3. write decision
By the time the write(3) is committed, the premise(1) of the decision(2) is no longer true

有一种悲观的方法,当我们基本上说“在给定时刻只有一个主题可以使用共享资源,其他人应该等待主题完成”。

还有一种乐观的方法,其阶段如维基百科中所定义:

I. Begin: Record a timestamp marking the transaction's beginning.
II. Modify: Read database values, and tentatively write changes.
III. Validate: Check whether other transactions have modified data that this transaction has used (read or written). This includes transactions that completed after this transaction's start time, and optionally, transactions that are still active at validation time.
IV. Commit/Rollback: If there is no conflict, make all changes take effect. If there is a conflict, resolve it, typically by aborting the transaction, although other resolution schemes are possible.

我的问题是,我们有什么保证在验证 (III) 发生时不会写入新的“知识”,从而满足上面给出的写入偏差的定义?

基本上,阶段 III 的验证模块必须保留一些内部分类账并以串行方式处理它们,以便交易 2 的检查过程不会在交易 1 写入事件之前发生。

我们是否刚刚将整个写倾斜问题下移了一层?所以我们在低层次上有一个可序列化的悲观方法,以便能够在更高层次上有一个乐观的方法?我弄错了什么吗?

如有任何说明,我将不胜感激。

最佳答案

为了使乐观锁定起作用 'III.验证'和'IV。 Commit/Rollback' 需要是单个原子操作。所以从这个意义上说,是的,“我们只是将整个写偏斜问题下移了一个级别”。

但是,'II.修改'是数据库控制之外的用户操作,可能需要很长时间才能完成,并且无法通过数据库实现进行优化。 '三。验证'和'IV。 Commit/Rollback' OTOH 是由数据库实现的操作,可以通过数据库实现优化为快速。

关于optimistic-locking - 乐观并发控制和写入偏斜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56576192/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com