深入理解資料庫併發控制原理

2021-08-22 12:51:20 字數 2587 閱讀 4349

併發控制原理

事務之間的相互影響可能導致資料庫狀態的不一致,即使各個事務能保持狀態的正確性,而且也沒有任何故障發生。因此,不同事務中各個步驟的執行順序必須以某種方式進行規範。控制這些步驟的功能由dbms的排程器部件完成,而保證併發執行的事務能保持一致性的整個過程稱為併發控制。排程器的作用如圖1所示。

首先討論如何保證併發執行的事務能保持資料庫狀態的正確性。抽象的要求稱為可序列性,另外還有乙個更強的、重要的條件為衝突可序列性,它是大多數排程器所真正實現的。我們考慮實現排程器的最重要技術:封鎖、時間戳和有效性確認。

1.序列排程和可序列化排程

1.1 排程

排程是乙個或多個事務的重要操作按時間排序的乙個序列。

例1 考慮兩個事務以及它們的動作按照某些順序執行時的資料庫的影響。t1和t2的重要動作如表1所示。

1 兩個事務

t1t2

read(a,t)

read(a,s)

t := t + 100

s := s*2

write(a,t)

write(a,s)

read(b,t)

read(b,s)

t := t + 100

s := s*2

wrtie(b,t)

write(b,s)

1.2 序列排程

如果乙個排程的動作首先是乙個事務的所有動作,然後是另乙個事務的所有動作,以此類推,而沒有動作的混合,那麼我們說這一排程是序列的。

例2 對錶1中的事務而言,兩個串列埠排程,乙個是t1在t2前,而另乙個是t2是t1之前,初態為a=b=25。

2t1在

t2前的序列排程

t1

t2

a

b

25

25

read(a,t)

t := t + 100

write(a,t)

125read(b,t)

t := t + 100

wrtie(b,t)

125

read(a,s)

s := s*2

write(a,s)

250

read(b,s)

s := s*2

write(b,s)

250

3 t2在t1

前的序列排程

t1

t2

a

b

25

25

read(a,t)

t := t + 100

write(a,t)

50

read(b,t)

t := t + 100

wrtie(b,t)

50read(a,s)

s := s*2

write(a,s)

150read(b,s)

s := s*2

write(b,s)

150

1.3 可序列化排程

事務的正確性原則告訴我們,每個序列排程都將保持資料庫狀態的一致性。

通常,不管資料庫初態怎樣,乙個排程對資料庫狀態的影響都和某個序列排程相同,我們就說這個排程是可序列化的。

例3 表4是例1中事務的乙個排程,此排程是可序列化的,但不是序列的。表5不是可序列化的。

5 乙個非序列的可序列化排程

t1

t2

a

b

25

25

read(a,t)

t := t + 100

write(a,t)

125read(a,s)

s := s*2

write(a,s)

250

read(b,t)

t := t + 100

wrtie(b,t)

125

read(b,s)

s := s*2

write(b,s)

250

6 乙個非可序列化的排程

t1

t2

a

b

25

25

read(a,t)

t := t + 100

write(a,t)

125read(a,s)

s := s*2

write(a,s)

250

read(b,s)

深入理解資料庫鎖

oracle中分為兩種模式的鎖,一種是排他鎖 x鎖 另一種是共享所 s鎖 鎖是實現併發的主要手段,在資料庫中應用頻繁,但很多都由資料庫自動管理,當事務提交後會自動釋放鎖.oracle為了使資料庫實現高度併發訪問,它使用了不同型別的鎖來管理併發會話對資料物件的操作.oracle的鎖按作用物件不同分為如...

mysql深入理解資料庫索引結構

1 資料庫檔案儲存的方式 資料庫檔案儲存都是以磁碟檔案儲存在系統中的,這也是資料庫能持久化儲存資料的原因。2 從資料庫讀取資料的原理 從資料庫讀取資料,先暫且不考慮從快取中讀取資料的情況,那就是從磁碟檔案中讀取資料的,我們知道從磁碟檔案中讀取資料是比較耗時的,資料庫的select操作的時間,取決於執...

深入理解資料庫事務 W18

transaction作為關係型資料庫的核心組成,在資料安全方面有著非常重要的作用,本文會一步步解析事務的核心特性,以獲得對事務更深的理解。資料庫幾乎是所有系統的核心模組,它將資料有條理地儲存在儲存介質 磁碟 中,並在邏輯上,將資料以結構化的形態呈現給使用者。支援資料的增 刪 改 查,並在過程中保障...