分布式資料庫學習 分布式併發控制

2022-05-05 18:27:09 字數 1709 閱讀 2213

在往常,我們一提到併發這個詞,就會馬上聯想到多執行緒這個詞。這是因為我們在平時的開發工作中經常有遇到多執行緒的場景。但是回過頭來看這個詞,其實併發的場景絕不僅限於多執行緒操作,另外乙個典型的應用場景就是資料庫裡的事務更新。現在乙個核心的問題來了,併發控制的目的是為了什麼?它有什麼作用?我們為什麼要引入這樣的控制機制呢?這些問題歸納起來就是乙個答案:在大規模並行操作下,保證資料的正確更新。也就是說如果我們不加以進行控制,是可能發生資料更新異常的情況,比如說操作亂序、操作丟失等等的情況。

ok,那麼併發控制機制中到底有哪些機制呢?在我們平常熟悉的多執行緒程式設計模型裡,我們提到最多的控制技巧就是兩種:1.悲觀方式,即鎖控制機制,從比較粗粒度的鎖(synchronized)到細粒度的鎖(readlock、writelock)。2.樂觀方式,即加時間戳方式。加時間戳的方式是為了保證操作的有序性。

但是在併發控制理論體系內,對於併發控制機制進行了更為細緻的分類,主要為以下的一些分類:

首先它同樣有分為悲觀演算法和樂觀演算法。

悲觀演算法:悲觀演算法包括基於加鎖,基於排序以及混合前2者的方式。在這裡筆者要說的是,這裡的基於排序是乙個比較寬泛的詞,比如說基於時間戳的排序也可以算是一種基於排序的方式。

樂觀演算法:樂觀演算法同樣可以分為基於加鎖和基於時間戳的方式。

其實從上面的分類結果可以看出,在併發控制理論體系內,並不是僅僅憑藉是否加鎖/時間戳來判斷併發控制方式是否為悲觀/樂觀的演算法。真實的情況是2種方式都可以交叉使用,目標是為了增強在當前演算法下的併發控制。比如說我們可以在基於加鎖的演算法內也使用時間戳,這樣可以提高效率和併發的級別。

下面,我們來學習併發理論體系內對於加鎖,加時間戳實現方式的一些細節內容。

加鎖方式有乙個比較大的缺點是它的效率問題,因為加鎖意味著當前只會允許乙個操作對資料進行有效的更新。但並不是所有的操作並行執行時都會有衝突,比如說2個讀操作。因此我們有了讀寫鎖的概念,讀寫鎖可以說是一種細粒度的鎖了,至少在效率上要比之前所提到的單一的鎖要高。

基於時間戳的併發控制演算法是另外一種比較常用的併發控制方式。從某種層面上來說,基於加鎖的方式是一種看起來是通過互斥的方式進行來維護資料的序列化。而基於時間戳的方式則是利用了時間戳本身的特點來達到資料操作的序列化。因為我們知道時間戳是具有單調性和唯一性的,所以它能夠很好的對每個新建立的事務分配標識。後面我們可以通過時間戳標識進行排序,來達到正確更新的效果。在基於時間戳的併發控制演算法內,有下面的形式化規則定義:

to(timestamp ordering)規則:給定事務ti和tk中的兩個衝突操作oij和ojk,當且僅當ts(ti)< ts(tk)時,oij會在ojk之前執行。在這種情況下,ti為較舊的事務,而tk為較新的事務。

使用to規則的排程程式會將每乙個操作與排程過的衝突操作進行比較,如果新的操作屬於較新的事務,則接受它,否則就將它拒絕,然後將相應的事務賦予新的時間戳並進行重啟。這句話大家細細品味。、

最後我們來看看悲/樂觀併發控制演算法的執行步驟,來看看二者的乙個區別。

首先是悲觀演算法下的執行過程:

|有效性驗證|-->|讀|-->|計算|-->|寫|
而樂觀演算法是將有效性驗證的操作移到寫操作之前,如下所示:

|讀|-->|計算|-->|有效性驗證|-->|寫|
我們可以看到,樂觀演算法的執行步驟可以讓前面的讀、計算操作可以自由的執行,只要在最後提交更新的時候進行一步檢查即可。

[1].分布式資料庫系統原理,第11章,分布式併發控制

分布式資料庫

網路選課系統中分布式資料庫設計 何翠雙王巧雲張麗麗 摘要 關鍵字 選課 分布式 資料庫 distributed system of on line course choosing abstract key words course choosing distributed database 隨著學校...

分布式資料庫

1 背景 我們知道資料是乙個公司的命脈,隨著業務越做越大,資料量也會越來越大,計算也會越來越複雜,效能,可靠性,可擴充套件性的需求就會越來越強烈,這個時候乙個集中式的資料庫顯然已經滿足不了需求了。對於技術決策者來說有兩條路可以走,第一 按照現有的大型資料庫的解決方案,比如sql server clu...

分布式資料庫

一 分布式資料庫的出現的場景 網際網路 軟體國產化 o2o 五新 新零售 新製造,新金融 新資源 新技術 等主題接連提出來,並且在各個行業落地,給資料庫帶來了巨大機會,具體包含3個方向 1.遠超單機資料庫容量的資料儲存和訪問峰值 2.實時資料分析檢索 oltp兼顧olap 3.更高階別的容災需求。這...