簡體   English   中英

什么是不可序列化時間表? 在交易數據庫中

[英]What is non-serializable schedule? in transaction database

誰能解釋我在事務數據庫中不能序列化的內容。 請給我一個例子。 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)

現在,我們在兩個會話中啟動兩個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

,即兩條記錄的value = 2

第一個查詢使兩個記錄的value = 1 ,第二個查詢看到了這些更改並使兩個記錄的value = 2

如果我們對SERIALIZABLE級別執行相同操作,結果將是這樣:

id   value
1    2
2    1

,即查詢將只交換的value

可序列化的事務將數據庫視為與事務開始時完全相同的狀態,但事務本身所做的更改除外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM