gpt4 book ai didi

optimistic-locking - 乐观锁绝对安全吗?

转载 作者:行者123 更新时间:2023-12-03 01:34:50 25 4
gpt4 key购买 nike

当使用乐观锁定策略时,可以解决如下并发问题:

| the first transaction started        ||                                      |  | select a row                         ||                                      |  the second transaction started| update the row with version checking ||                                      |  select the same row | commit txn                           ||                                      |  update the row with version checking|                                      |  |                                      |  rolls back because version is dirty

但是,如果在极少数情况下,如果第二个事务中的更新是在第一个事务中的更新之后但在事务提交之前怎么办?

| the first transaction started        ||                                      |  the second transaction started| select a row                         ||                                      |  select the same row | update the row with version checking ||                                      |  update the row with version checking| commit txn                           ||                                      |  rolls back because version is dirty // will it?|                                      |  |                                      |  

我做了一个实验,第二个事务中的更新无法读取“脏”版本,因为第一个事务尚未提交。这种情况下第二笔交易会失败吗?

最佳答案

您在问题中没有说明您实际使用的数据库系统,所以我不知道您系统的详细信息。

但无论如何,在乐观锁定系统下,进程在执行更新语句时不能只检查行版本,因为这正是您担心的问题。

对于完全可序列化、隔离的事务,每个进程必须在提交时以原子方式检查其检查和修改的所有行的行版本。因此,在第二种情况下,右侧进程在尝试提交之前不会检测到冲突(您没有为右侧进程包含此步骤)。当它尝试提交时,它将检测冲突并回滚。

关于optimistic-locking - 乐观锁绝对安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888951/

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