gpt4 book ai didi

database - 什么是不可序列化调度?在交易数据库中

转载 作者:搜寻专家 更新时间:2023-10-30 22:22:05 25 4
gpt4 key购买 nike

谁能给我解释一下事务数据库中什么是不可序列化的。请给我一个例子。 r1(x) r2(x)w1(y) c2 c1 这是不可序列化的吗?

最佳答案

想象一下这个表(在 Oracle 中):

CREATE TABLE t_series (id INT NOT NULL PRIMARY KEY, value INT NOT NULL)

INSERT
INTO t_series
VALUES (1, 1)

INSERT
INTO t_series
VALUES (2, 2)

现在我们在两个 session 中启动两个 READ COMMITTED 事务:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

并发出以下查询:

-- session 1
UPDATE t_series
SET value = 1
WHERE value = 2
/
COMMIT
/

然后:

-- session 2
UPDATE t_series
SET value = 2
WHERE value = 1
/
COMMIT
/

结果是这样的:

id   value
1 2
2 2

,我。 e.两条记录都有 value = 2

第一个查询使两个记录都具有 value = 1,第二个查询看到这些更改并使两个记录都具有 value = 2

如果我们对 SERIALIZABLE 级别做同样的事情,结果将是这样的:

id   value
1 2
2 1

,我。 e.查询只会交换 value

除了事务本身所做的更改外,可序列化事务看到的数据库状态与事务开始时完全相同。

关于database - 什么是不可序列化调度?在交易数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282415/

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