資料庫是乙個資源庫,可以供多個使用者使用. 允許多個使用者同時使用同乙個資料庫的資料庫系統稱為多使用者資料庫系統.例如飛機訂票資料庫系統、銀行資料庫系統. 在多使用者資料庫系統中同乙個時刻會有很多個併發執行的事務.
1.提高吞吐量和資源利用率: 乙個事務由多個步驟組成,一些步驟涉及i/o活動,另一些涉及cpu活動。計算機系統中cpu與磁碟可以並行運作。 因此,i/o活動可以與cpu處理並行執行。利用cpu與i/o系統的並行性,多個事務可以並行執行。當乙個事務在乙個磁碟上進行讀寫時,另乙個事務可在cpu上執行,同時第三個事務由可以在另乙個磁碟上進行讀寫。從而系統的吞吐量(throughout)增加,
即給定時間內執行的事務數增加。相應的處理器與磁碟利用率也提高;處理器與磁碟空閒時間較少。
世界是矛盾的。序列方式工作效率低,所以人們想到了併發方式,但是所有的併發都會在某種情況下帶來問題。也就是所謂的併發問題。例如,在資料庫中有第一類丟失更新問題,髒讀問題、不可重複讀問題、虛讀問題、第二類丟失更新問題。所以,需要我們在開發程式的時候需要處理某些併發帶來的問題。也就是說使用併發操作,但是不能有問題。通常採用總體併發,區域性序列的方式。
併發(concurrent)和並行(parallel)這兩個概念,在資料庫系統的資料中經常出現,然而有關它們的定義和區別卻沒有明確的說法。這裡,我們根據這兩個概念在資料中的使用,對它們的不同做乙個說明。事務是併發控制的基本單位. 資料庫的併發操作可能會破壞食物的acid特性. 為了保證食物的隔離性和一致性, 所以資料庫管理系統需要對併發操作進行正確的排程.併發是指多個任務的同時執行,任務與任務之間沒有聯絡。由於資料庫系統要同時為許多使用者提供服務,每個使用者都可以發出自己的訪問請求,乙個請求就是乙個任務。在乙個時間點,資料庫系統可能要同時處理多個任務。因此,資料庫系統一定要具備併發處理能力。
並行是指將乙個任務劃分為多個子任務,這些子任務同時執行。在所有子任務處理完成後,將它們的結果進行合併,就得到該任務的最終處理結果。在資料庫系統中,如果要執行乙個大的資料查詢,為了提高速度、降低響應時間,使用者可以通過系統配置或者在命令中,要求對該大資料量查詢進行並行處理,將該查詢劃分成多個子查詢。這些子查詢同時執行,最後系統將所有子查詢的處理結果進行合併,作為該查詢處理的最終結果。現有的大型資料庫系統都支援並行處理。
需要說明的是,併發和並行與資料庫系統採用多程序還是多執行緒體系結構無關。對採用多程序結構的資料庫系統,所有的任務、子任務通過程序來處理;而對採用多執行緒結構的資料庫系統,這些工作是由執行緒來完成。
資料庫系統的併發控制,涉及到任務的排程、資料的一致性及可靠性等,而資料庫系統的並行處理,主要涉及任務的處理速度、系統效能等方面。
1.丟失修改過的資料
2.不可重複讀
3.讀「髒」資料
事務t1和事物t2 同時併發讀入乙個資料num = 0, t1把num + 1 後num 為 1, t2 把num也加1, 原則上說num應該是2, 但是!!! num 還是1, 因為t2 和t1讀入的num 都是0.
不可重複是指事物t1讀取資料後,事務t2執行更新操作,使得t1無法再現前一次讀取結果,(結果發生了改變,增加了,減少了,或者是丟失了)
2.1事務t1 讀取某一資料後,事務t2對其進行了修改,當事務t1再次讀取該資料時,得到的與前一次不同的值。
2.2事務t1安一定條件從資料庫中讀取了某些資料記錄後,事務t2刪除了其中部分記錄,當t1再次按相同條件讀取資料時,發現原來的資料中的某些記錄消失了。
2.3事務t1按一定條件從資料庫中讀取某些資料記錄後,事務t2插入了一些記錄,當t1再次按相同條件讀取資料時,發現資料多了一些記錄。
讀「髒」資料是指事物t1修改某一資料並將其寫回磁碟,事務t2讀取同一資料後,t1 由於某種原因被撤銷, 這是t1修改過的資料又恢復了原來的值,但是t2之前已經讀了之前修改完但是沒撤銷的資料, 這就導致t2讀到的資料和資料庫中的資料不一致。 我們稱t2讀取到的資料為「髒」資料。
產生上述三種問題的主要原因是併發操作破壞了事務的隔離性。 併發控制機制就是要用正確的方式排程併發操作,使乙個使用者事務的執行不受其他事務的干擾。 併發控制的主要技術包括:封鎖(locking)、時間戳(timestamp)、樂觀控制發(optimistic scheduler)和多版本併發控制(multi-version concurrency control, mvcc)等
資料庫併發控制
資料庫併發控制 1 在資料庫中為什麼要併發控制?答 資料庫是共享資源,通常有許多個事務同時在執行。當多個事務併發地訪問資料庫時就會產生同時讀取和 或修改同一資料的情況。若對併發操作不加控制就可能會訪問和儲存不正確的資料,破壞資料庫的一致性。所以資料庫管理系統必須提供併發控制機制。2 併發操作可能會產...
資料庫併發控制
acid,是指在可靠資料庫管理系統 dbms 中,事務 transaction 所應該具有的四個特性 a 原子性 atomicity 事務是乙個或多個行為 在一起組成乙個單獨的工作單元,事務中的動作要不都發生,要不都不發生.c 一致性 consistent 即在事務開始之前和結束之後,資料庫的完整性...
資料庫併發控制技術
事務是一系列的資料庫操作,是資料庫應用程式的基本邏輯單元,也是恢復和併發控制的基本單位。事務處理技術主要包括資料庫恢復技術和併發控制技術。本篇博文主要總結下併發控制技術。事務 是使用者定義的乙個資料庫操作序列,這些操作要麼全做,要麼全不做,是乙個不可分割的工作單位。例如,在關聯式資料庫中,乙個事務可...