資料庫併發控制
1. 在資料庫中為什麼要併發控制?
答:資料庫是共享資源,通常有許多個事務同時在執行。當多個事務併發地訪問資料庫時就會產生同時讀取和/或修改同一資料的情況。若對併發操作不加控制就可能會訪問和儲存不正確的資料,破壞資料庫的一致性。所以資料庫管理系統必須提供併發控制機制。
2 .併發操作可能會產生哪幾類資料不一致?用什麼方法能避免各種不一致的情況?
答:併發操作帶來的資料不一致性包括三類:丟失修改、不可重複讀和讀「髒』夕資料。 ( l )丟失修改(lost update ) 兩個事務 tl 和t2讀入同一資料並修改,t2提交的結果破壞了(覆蓋了) tl 提交的結果,導致 tl 的修改被丟失。 ( 2 )不可重複讀( non 一 repeatable read ) 不可重複讀是指事務 tl 讀取資料後,事務幾執行更新操作,使 tl 無法再現前一次讀取結果。( 3 )讀「髒」資料( dirty read ) 讀「髒』夕資料是指事務 tl 修改某一資料,並將其寫回磁碟,事務幾讀取同一資料後, tl 由於某種原因被撤銷,這時 tl 已修改過的資料恢復原值,幾讀到的資料就與資料庫中的資料不一致,則幾讀到的資料就為「髒」資料,即不正確的資料。避免不一致性的方法和技術就是併發控制。最常用的技術是封鎖技術。也可以用其他技術,例如在分布式資料庫系統中可以採用時間戳方法來進行併發控制。
3 .什麼是封鎖?基本的封鎖型別有幾種?試述它們的含義。
答:封鎖就是事務 t 在對某個資料物件例如表、記錄等操作之前,先向系統發出請求,對其加鎖。加鎖後事務 t 就對該資料物件有了一定的控制,在事務 t 釋放它的鎖之前,其他的事務不能更新此資料物件。封鎖是實現併發控制的乙個非常重要的技術。
基本的封鎖型別有兩種:排它鎖( exclusive locks ,簡稱 x 鎖)和共享鎖 ( share locks,簡稱 s 鎖)。排它鎖又稱為寫鎖。若事務 t 對資料物件 a 加上 x 鎖,則只允許 t 讀取和修改 a ,其他任何事務都不能再對 a 加任何型別的鎖,直到 t 釋放 a 上的鎖。這就保證了其他事務在 t 釋放 a 上的鎖之前不能再讀取和修改 a 。共享鎖又稱為讀鎖。若事務 t 對資料物件 a 加上 s 鎖,則事務 t 可以讀 a但不能修改 a ,其他事務只能再對 a 加 s 鎖,而不能加 x 鎖,直到 t 釋放 a 上的 s 鎖。這就保證了其他事務可以讀 a ,但在 t 釋放 a 上的 s 鎖之前不能對 a 做任何修改。
4 .如何用封鎖機制保證資料的一致性?
答: dbms 在對資料進行讀、寫操作之前首先對該資料執行封鎖操作,例如下圖中事務 tl 在對 a 進行修改之前先對 a 執行 xock ( a ) ,即對 a 加 x 鎖。這樣,當幾請求對 a 加 x 鎖時就被拒絕,幾只能等待 tl 釋放 a 上的鎖後才能獲得對 a 的 x 鎖,這時它讀到的 a 是 tl 更新後的值,再按此新的 a 值進行運算。這樣就不會丟失 tl 的更新。
dbms 按照一定的封鎖協議,對併發操作進行控制,使得多個併發操作有序地執行,就可以避免丟失修改、不可重複讀和讀「髒』夕資料等資料不一致性。
資料庫併發控制
acid,是指在可靠資料庫管理系統 dbms 中,事務 transaction 所應該具有的四個特性 a 原子性 atomicity 事務是乙個或多個行為 在一起組成乙個單獨的工作單元,事務中的動作要不都發生,要不都不發生.c 一致性 consistent 即在事務開始之前和結束之後,資料庫的完整性...
資料庫併發控制
資料庫是乙個資源庫,可以供多個使用者使用.允許多個使用者同時使用同乙個資料庫的資料庫系統稱為多使用者資料庫系統.例如飛機訂票資料庫系統 銀行資料庫系統.在多使用者資料庫系統中同乙個時刻會有很多個併發執行的事務.1.提高吞吐量和資源利用率 乙個事務由多個步驟組成,一些步驟涉及i o活動,另一些涉及cp...
資料庫併發控制技術
事務是一系列的資料庫操作,是資料庫應用程式的基本邏輯單元,也是恢復和併發控制的基本單位。事務處理技術主要包括資料庫恢復技術和併發控制技術。本篇博文主要總結下併發控制技術。事務 是使用者定義的乙個資料庫操作序列,這些操作要麼全做,要麼全不做,是乙個不可分割的工作單位。例如,在關聯式資料庫中,乙個事務可...