事務(wù)、并發(fā)、隔離級別、鎖3_第1頁
事務(wù)、并發(fā)、隔離級別、鎖3_第2頁
事務(wù)、并發(fā)、隔離級別、鎖3_第3頁
事務(wù)、并發(fā)、隔離級別、鎖3_第4頁
事務(wù)、并發(fā)、隔離級別、鎖3_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Copyright (C) 2011 Indeed Information Technology Co., Ltd. 數(shù)據(jù)庫并發(fā)、事務(wù)、隔離級別、鎖新事業(yè)部:程學(xué)文Copyright (C) 2011 Indeed Information Technology Co., Ltd. 目錄事務(wù)與并發(fā)隔離級別和鎖行版本控制(2005)死鎖與解鎖Copyright (C) 2011 Indeed Information Technology Co., Ltd. 事務(wù)與并發(fā)隔離級別和鎖行版本控制(2005)死鎖與解鎖Copyright (C) 2011 Indeed Information Techno

2、logy Co., Ltd. 并發(fā)與事務(wù)數(shù)據(jù)完整性數(shù)據(jù)完整性:數(shù)據(jù)完整性:數(shù)據(jù)完整性(數(shù)據(jù)完整性(Data IntegrityData Integrity)是指數(shù)據(jù)的精確性、是)是指數(shù)據(jù)的精確性、是指數(shù)據(jù)的精確性和可靠性。指數(shù)據(jù)的精確性和可靠性。它是應(yīng)防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù)和防止因它是應(yīng)防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù)和防止因錯誤信息的輸入輸出造成無效操作或錯誤信息而提出的。錯誤信息的輸入輸出造成無效操作或錯誤信息而提出的。數(shù)據(jù)完整性分為四類:數(shù)據(jù)完整性分為四類:a.a.實體完整性(實體完整性(Entity IntegrityEntity Integrity)b.b.域完整性

3、(域完整性(Domain IntegrityDomain Integrity)c.c.參照完整性(參照完整性(Referential IntegrityReferential Integrity)d.d.用戶定義的完整性(用戶定義的完整性(User-definedIntegrityUser-definedIntegrity)Copyright (C) 2011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)數(shù)據(jù)完整性實體完整性實體完整性:實體完整性:概念:概念:實體完整性指表中行的完整性。要求表中的所有行都有唯實體完整性指表中行的完整性。要求表中的所

4、有行都有唯一的標(biāo)識符,稱為主關(guān)鍵字。主關(guān)鍵字是否可以修改,或一的標(biāo)識符,稱為主關(guān)鍵字。主關(guān)鍵字是否可以修改,或整個列是否可以被刪除,取決于主關(guān)鍵字與其他表之間要整個列是否可以被刪除,取決于主關(guān)鍵字與其他表之間要求的完整性。求的完整性。實體完整性要求每一個表中的實體完整性要求每一個表中的主鍵主鍵字段都不能為空或者重字段都不能為空或者重復(fù)的值。復(fù)的值。Copyright (C) 2011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)數(shù)據(jù)完整性域完整性域完整性:域完整性:概念:概念:域完整性是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件。它反映域完整性是針對某一具體

5、關(guān)系數(shù)據(jù)庫的約束條件。它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。域完整某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。域完整性指列的值域的完整性。如性指列的值域的完整性。如數(shù)據(jù)類型、格式、值域范圍、數(shù)據(jù)類型、格式、值域范圍、是否允許空值是否允許空值等。等。域完整性限制了某些屬性中出現(xiàn)的值,把屬性限制在一個域完整性限制了某些屬性中出現(xiàn)的值,把屬性限制在一個有限的集合中。例如,如果屬性類型是整數(shù),那么它就不有限的集合中。例如,如果屬性類型是整數(shù),那么它就不能是能是101.5101.5或任何非整數(shù)?;蛉魏畏钦麛?shù)。Copyright (C) 2011 Indeed Information Tech

6、nology Co., Ltd. 并發(fā)與事務(wù)數(shù)據(jù)完整性參照完整性參照完整性:參照完整性:概念:概念:當(dāng)更新、刪除、插入一個表中的數(shù)據(jù)時,通過參照引用相當(dāng)更新、刪除、插入一個表中的數(shù)據(jù)時,通過參照引用相互關(guān)聯(lián)的另一個表中的數(shù)據(jù),來檢查對表的數(shù)據(jù)操作是否互關(guān)聯(lián)的另一個表中的數(shù)據(jù),來檢查對表的數(shù)據(jù)操作是否正確。正確。簡單的說就是表間主鍵外鍵的關(guān)系,是相關(guān)聯(lián)的兩簡單的說就是表間主鍵外鍵的關(guān)系,是相關(guān)聯(lián)的兩個表之間的約束。個表之間的約束。參照完整性屬于表間規(guī)則。對于永久關(guān)系的相關(guān)表,在更參照完整性屬于表間規(guī)則。對于永久關(guān)系的相關(guān)表,在更新、插入或刪除記錄時,如果只改其一不改其二,就會影新、插入或刪除記錄

7、時,如果只改其一不改其二,就會影響數(shù)據(jù)的完整性:例如修改父表中關(guān)鍵字值后,子表關(guān)鍵響數(shù)據(jù)的完整性:例如修改父表中關(guān)鍵字值后,子表關(guān)鍵字值未做相應(yīng)改變;刪除父表的某記錄后,子表的相應(yīng)記字值未做相應(yīng)改變;刪除父表的某記錄后,子表的相應(yīng)記錄未刪除,致使這些記錄成為孤立記錄;對于子表插入的錄未刪除,致使這些記錄成為孤立記錄;對于子表插入的記錄,父表中沒有相應(yīng)關(guān)鍵字值的記錄;等等。對于這些記錄,父表中沒有相應(yīng)關(guān)鍵字值的記錄;等等。對于這些設(shè)計表間數(shù)據(jù)的完整性,統(tǒng)稱為參照完整性。設(shè)計表間數(shù)據(jù)的完整性,統(tǒng)稱為參照完整性。Copyright (C) 2011 Indeed Information Techno

8、logy Co., Ltd. 并發(fā)與事務(wù)事務(wù)事務(wù):事務(wù):數(shù)據(jù)庫提供了多種保證數(shù)據(jù)完整性的方式,其中一種基本數(shù)據(jù)庫提供了多種保證數(shù)據(jù)完整性的方式,其中一種基本方式便是方式便是事務(wù)事務(wù)EXEX:銀行轉(zhuǎn)賬銀行轉(zhuǎn)賬: :甲向乙賬戶轉(zhuǎn)帳甲向乙賬戶轉(zhuǎn)帳100100元元1.1.檢查甲賬戶余額是否超過檢查甲賬戶余額是否超過100100元元2.2.如果大于如果大于100100元,則甲賬戶扣除元,則甲賬戶扣除100100元元3.3.乙賬戶增加乙賬戶增加100100元元概念:概念:數(shù)據(jù)庫事務(wù)是指作為單個邏輯工作單元執(zhí)行的一系列操作數(shù)據(jù)庫事務(wù)是指作為單個邏輯工作單元執(zhí)行的一系列操作, ,事務(wù)內(nèi)的語句被作為一個整體執(zhí)行

9、,確保除非事務(wù)性單事務(wù)內(nèi)的語句被作為一個整體執(zhí)行,確保除非事務(wù)性單元內(nèi)的所有操作都成功完成,否則不會永久更新面向數(shù)據(jù)元內(nèi)的所有操作都成功完成,否則不會永久更新面向數(shù)據(jù)的資源。的資源。Copyright (C) 2011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)事務(wù)事務(wù)的特點事務(wù)的特點:事務(wù)的特點:一個邏輯工作單元要成為事務(wù),必須滿足所謂的一個邏輯工作單元要成為事務(wù),必須滿足所謂的ACID(ACID(原子原子性、一致性、隔離性和持久性性、一致性、隔離性和持久性) )屬性:屬性:a.a.原子性:原子性:事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么全

10、都執(zhí)事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行行,要么全都不執(zhí)行。通常,與某個事務(wù)關(guān)聯(lián)的操作具有共,要么全都不執(zhí)行。通常,與某個事務(wù)關(guān)聯(lián)的操作具有共同同的目標(biāo),并且是相互依賴的。如果系統(tǒng)只執(zhí)行這些操作的的目標(biāo),并且是相互依賴的。如果系統(tǒng)只執(zhí)行這些操作的一一個子集,則可能會破壞事務(wù)的總體目標(biāo)。原子性消除了系個子集,則可能會破壞事務(wù)的總體目標(biāo)。原子性消除了系統(tǒng)統(tǒng)操作子集的可能性。操作子集的可能性。b.b.一致性:一致性:事務(wù)的一致性指的是在一個事務(wù)執(zhí)行之前和執(zhí)行。之后數(shù)事務(wù)的一致性指的是在一個事務(wù)執(zhí)行之前和執(zhí)行。之后數(shù)據(jù)據(jù)庫都必須處于一致性狀態(tài)。這種特性稱為事務(wù)的一致性假庫都必須處于一致

11、性狀態(tài)。這種特性稱為事務(wù)的一致性假如如數(shù)據(jù)庫的狀態(tài)滿足所有的完整性約束,就說該數(shù)據(jù)庫是一數(shù)據(jù)庫的狀態(tài)滿足所有的完整性約束,就說該數(shù)據(jù)庫是一致致的。的。Copyright (C) 2011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)事務(wù)事務(wù)的特點例如,當(dāng)數(shù)據(jù)庫處于一致性狀態(tài)例如,當(dāng)數(shù)據(jù)庫處于一致性狀態(tài)S1S1時,對數(shù)據(jù)庫執(zhí)行一個時,對數(shù)據(jù)庫執(zhí)行一個事務(wù),在事務(wù)執(zhí)行期間假定數(shù)據(jù)庫的狀態(tài)是不一致的,當(dāng)事務(wù),在事務(wù)執(zhí)行期間假定數(shù)據(jù)庫的狀態(tài)是不一致的,當(dāng)事務(wù)執(zhí)行結(jié)束時,數(shù)據(jù)庫處在一致性狀態(tài)事務(wù)執(zhí)行結(jié)束時,數(shù)據(jù)庫處在一致性狀態(tài)S2S2。c.c.隔離性:隔離性

12、:由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一修改隔離。事務(wù)查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會查看中間狀態(tài)的數(shù)據(jù)。的狀態(tài),事務(wù)不會查看中間狀態(tài)的數(shù)據(jù)。當(dāng)事務(wù)可序列化時將獲得最高的隔離級別當(dāng)事務(wù)可序列化時將獲得最高的隔離級別。在此級別上,。在此級別上,從一組可并行執(zhí)行的事務(wù)獲得的結(jié)果與通過連續(xù)運(yùn)行每個從一組可并行執(zhí)行的事務(wù)獲得的結(jié)果與通過連續(xù)運(yùn)行每個事務(wù)所獲得的結(jié)果相同。由于高度

13、隔離會限制可并行執(zhí)行事務(wù)所獲得的結(jié)果相同。由于高度隔離會限制可并行執(zhí)行的事務(wù)數(shù),所以一些應(yīng)用程序降低隔離級別以換取更大的的事務(wù)數(shù),所以一些應(yīng)用程序降低隔離級別以換取更大的吞吐量。吞吐量。 Copyright (C) 2011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)事務(wù)事務(wù)的特點DBMSDBMS可以在并發(fā)執(zhí)行的事務(wù)間提供不同級別的分離。分離可以在并發(fā)執(zhí)行的事務(wù)間提供不同級別的分離。分離的級別和并發(fā)事務(wù)的吞吐量之間存在反比關(guān)系。較多事務(wù)的級別和并發(fā)事務(wù)的吞吐量之間存在反比關(guān)系。較多事務(wù)的可分離性可能會帶來較高的沖突和較多的事務(wù)流產(chǎn)。流的可分離性可

14、能會帶來較高的沖突和較多的事務(wù)流產(chǎn)。流產(chǎn)的事務(wù)要消耗資源,這些資源必須要重新被訪問。因此產(chǎn)的事務(wù)要消耗資源,這些資源必須要重新被訪問。因此,確保高分離級別的,確保高分離級別的DBMSDBMS需要更多的開銷。需要更多的開銷。d.d.持久性:持久性:持久性意味著當(dāng)系統(tǒng)或介質(zhì)發(fā)生故障時,確保已提交事持久性意味著當(dāng)系統(tǒng)或介質(zhì)發(fā)生故障時,確保已提交事務(wù)的更新不能丟失。即一旦一個事務(wù)提交,務(wù)的更新不能丟失。即一旦一個事務(wù)提交,DBMSDBMS保證它對保證它對數(shù)據(jù)庫中數(shù)據(jù)的改變應(yīng)該是永久性的,耐得住任何系統(tǒng)故數(shù)據(jù)庫中數(shù)據(jù)的改變應(yīng)該是永久性的,耐得住任何系統(tǒng)故障。持久性通過數(shù)據(jù)庫備份和恢復(fù)來保證。障。持久性通

15、過數(shù)據(jù)庫備份和恢復(fù)來保證。Copyright (C) 2011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)并發(fā)并發(fā):并發(fā):通常為了獲得更好的運(yùn)行性能,各種數(shù)據(jù)庫都允許多個通常為了獲得更好的運(yùn)行性能,各種數(shù)據(jù)庫都允許多個事務(wù)同時運(yùn)行,這就是事務(wù)并發(fā)。當(dāng)并發(fā)的事務(wù)訪問或修事務(wù)同時運(yùn)行,這就是事務(wù)并發(fā)。當(dāng)并發(fā)的事務(wù)訪問或修改數(shù)據(jù)庫中相同的數(shù)據(jù)時,通常需要采取必要的隔離機(jī)制改數(shù)據(jù)庫中相同的數(shù)據(jù)時,通常需要采取必要的隔離機(jī)制,反之會出現(xiàn)各種并發(fā)問題。這些并發(fā)問題可歸納為以下,反之會出現(xiàn)各種并發(fā)問題。這些并發(fā)問題可歸納為以下四種:四種:a.a.丟失或覆蓋更新

16、。丟失或覆蓋更新。b.b.未確認(rèn)的相關(guān)性。未確認(rèn)的相關(guān)性。( (臟讀)臟讀)c.c.不一致的分析。(不可重復(fù)讀)不一致的分析。(不可重復(fù)讀)d.d.幻像讀幻像讀Copyright (C) 2011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)并發(fā)丟失更新丟失更新:丟失更新:當(dāng)兩個或多個事務(wù)選擇同一行,然后基于最初選定的值更當(dāng)兩個或多個事務(wù)選擇同一行,然后基于最初選定的值更新該行時,會發(fā)生丟失更新問題。每個事務(wù)都不知道其它新該行時,會發(fā)生丟失更新問題。每個事務(wù)都不知道其它事務(wù)的存在。最后的更新將重寫由其它事務(wù)所做的更新,事務(wù)的存在。最后的更新將重寫由

17、其它事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。這將導(dǎo)致數(shù)據(jù)丟失。例如例如: :兩個編輯人員制作了同一文檔的電子復(fù)本。每個編兩個編輯人員制作了同一文檔的電子復(fù)本。每個編輯人員獨(dú)立地更改其復(fù)本,然后保存更改后的復(fù)本,這樣輯人員獨(dú)立地更改其復(fù)本,然后保存更改后的復(fù)本,這樣就覆蓋了原始文檔。最后保存其更改復(fù)本的編輯人員覆蓋就覆蓋了原始文檔。最后保存其更改復(fù)本的編輯人員覆蓋了第一個編輯人員所做的更改。如果在第一個編輯人員完了第一個編輯人員所做的更改。如果在第一個編輯人員完成之后第二個編輯人員才能進(jìn)行更改,則可以避免該問題。成之后第二個編輯人員才能進(jìn)行更改,則可以避免該問題。Copyright (C) 2011

18、Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)并發(fā)未確認(rèn)的相關(guān)性未確認(rèn)的相關(guān)性未確認(rèn)的相關(guān)性( (臟讀臟讀):):當(dāng)?shù)诙€事務(wù)選擇其它事務(wù)正在更新的行時,會發(fā)生未確當(dāng)?shù)诙€事務(wù)選擇其它事務(wù)正在更新的行時,會發(fā)生未確認(rèn)的相關(guān)性問題。第二個事務(wù)正在讀取的數(shù)據(jù)還沒有確認(rèn)認(rèn)的相關(guān)性問題。第二個事務(wù)正在讀取的數(shù)據(jù)還沒有確認(rèn)并且可能由更新此行的事務(wù)所更改。并且可能由更新此行的事務(wù)所更改。例如:例如:一個編輯人員正在更改電子文檔。在更改過程中,另一個一個編輯人員正在更改電子文檔。在更改過程中,另一個編輯人員復(fù)制了該文檔(該復(fù)本包含到目前為止所做的全編輯人員復(fù)制了該

19、文檔(該復(fù)本包含到目前為止所做的全部更改)并將其分發(fā)給預(yù)期的用戶。此后,第一個編輯人部更改)并將其分發(fā)給預(yù)期的用戶。此后,第一個編輯人員認(rèn)為目前所做的更改是錯誤的,于是刪除了所做的編輯員認(rèn)為目前所做的更改是錯誤的,于是刪除了所做的編輯并保存了文檔。分發(fā)給用戶的文檔包含不再存在的編輯內(nèi)并保存了文檔。分發(fā)給用戶的文檔包含不再存在的編輯內(nèi)容,并且這些編輯內(nèi)容應(yīng)認(rèn)為從未存在過。如果在第一個容,并且這些編輯內(nèi)容應(yīng)認(rèn)為從未存在過。如果在第一個編輯人員確定最終更改前任何人都不能讀取更改的文檔,編輯人員確定最終更改前任何人都不能讀取更改的文檔,則可以避免該問題。則可以避免該問題。Copyright (C) 2

20、011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)并發(fā)不一致的分析不一致的分析(非重復(fù)讀)不一致的分析(非重復(fù)讀): :當(dāng)?shù)诙€事務(wù)多次訪問同一行而且每次讀取不同的數(shù)據(jù)時當(dāng)?shù)诙€事務(wù)多次訪問同一行而且每次讀取不同的數(shù)據(jù)時,會發(fā)生不一致的分析問題。不一致的分析與未確認(rèn)的相,會發(fā)生不一致的分析問題。不一致的分析與未確認(rèn)的相關(guān)性類似,因為其它事務(wù)也是正在更改第二個事務(wù)正在讀關(guān)性類似,因為其它事務(wù)也是正在更改第二個事務(wù)正在讀取的數(shù)據(jù)。然而,在不一致的分析中,第二個事務(wù)讀取的取的數(shù)據(jù)。然而,在不一致的分析中,第二個事務(wù)讀取的數(shù)據(jù)是由已進(jìn)行了更改的事務(wù)提交的

21、。而且,不一致的分?jǐn)?shù)據(jù)是由已進(jìn)行了更改的事務(wù)提交的。而且,不一致的分析涉及多次(兩次或更多)讀取同一行,而且每次信息都析涉及多次(兩次或更多)讀取同一行,而且每次信息都由其它事務(wù)更改;因而該行被非重復(fù)讀取。由其它事務(wù)更改;因而該行被非重復(fù)讀取。例如:例如:一個編輯人員兩次讀取同一文檔,但在兩次讀取之間,作一個編輯人員兩次讀取同一文檔,但在兩次讀取之間,作者重寫了該文檔。當(dāng)編輯人員第二次讀取文檔時,文檔已者重寫了該文檔。當(dāng)編輯人員第二次讀取文檔時,文檔已更改。原始讀取不可重復(fù)。如果只有在作者全部完成編寫更改。原始讀取不可重復(fù)。如果只有在作者全部完成編寫后編輯人員才可以讀取文檔,則可以避免該問題。

22、后編輯人員才可以讀取文檔,則可以避免該問題。Copyright (C) 2011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)并發(fā)幻想讀幻像讀:幻像讀:當(dāng)對某行執(zhí)行插入或刪除操作,而該行屬于某個事務(wù)正讀當(dāng)對某行執(zhí)行插入或刪除操作,而該行屬于某個事務(wù)正讀取的行的范圍時,會發(fā)生幻像讀問題。事務(wù)第一次讀的行取的行的范圍時,會發(fā)生幻像讀問題。事務(wù)第一次讀的行范圍顯示出其中一行已不復(fù)存在于第二次讀或后續(xù)讀中,范圍顯示出其中一行已不復(fù)存在于第二次讀或后續(xù)讀中,因為該行已被其它事務(wù)刪除。同樣,由于其它事務(wù)的插入因為該行已被其它事務(wù)刪除。同樣,由于其它事務(wù)的插入操

23、作,事務(wù)的第二次或后續(xù)讀顯示有一行已不存在于原始操作,事務(wù)的第二次或后續(xù)讀顯示有一行已不存在于原始讀中。讀中。例如:例如:一個編輯人員更改作者提交的文檔,但當(dāng)生產(chǎn)部門將其更一個編輯人員更改作者提交的文檔,但當(dāng)生產(chǎn)部門將其更改內(nèi)容合并到該文檔的主復(fù)本時,發(fā)現(xiàn)作者已將未編輯的改內(nèi)容合并到該文檔的主復(fù)本時,發(fā)現(xiàn)作者已將未編輯的新材料添加到該文檔中。如果在編輯人員和生產(chǎn)部門完成新材料添加到該文檔中。如果在編輯人員和生產(chǎn)部門完成對原始文檔的處理之前,任何人都不能將新材料添加到文對原始文檔的處理之前,任何人都不能將新材料添加到文檔中,則可以避免該問題。檔中,則可以避免該問題。Copyright (C) 2

24、011 Indeed Information Technology Co., Ltd. 并發(fā)與事務(wù)隔離級別和鎖行版本控制(2005)死鎖與解鎖Copyright (C) 2011 Indeed Information Technology Co., Ltd. 隔離級別與鎖隔離級別1.1.隔離級別:隔離級別:控制隔離數(shù)據(jù)以供一個進(jìn)程使用并防止其它進(jìn)程干擾的程控制隔離數(shù)據(jù)以供一個進(jìn)程使用并防止其它進(jìn)程干擾的程度的事務(wù)屬性。為在并發(fā)性能與并發(fā)問題間尋找一個最佳度的事務(wù)屬性。為在并發(fā)性能與并發(fā)問題間尋找一個最佳的平衡,隔離屬性分為不同級別,數(shù)據(jù)庫通過不同的隔離的平衡,隔離屬性分為不同級別,數(shù)據(jù)庫通過不

25、同的隔離級別控制并發(fā)引起的問題:級別控制并發(fā)引起的問題: 類別類別 隔離級別隔離級別1 1)未提交讀)未提交讀 READ UNCOMMITTED READ UNCOMMITTED 低低2 2)已提交讀)已提交讀 READ COMMITTEDREAD COMMITTED3 3)可重復(fù)讀)可重復(fù)讀 REPEATABLE READREPEATABLE READ4 4)可序列化)可序列化 SERIALIZABLE SERIALIZABLE 高高Copyright (C) 2011 Indeed Information Technology Co., Ltd. 隔離級別與鎖隔離級別不同隔離級別對應(yīng)的并發(fā)

26、問題處理:不同隔離級別對應(yīng)的并發(fā)問題處理:隔離級別隔離級別臟讀臟讀不可重不可重復(fù)讀復(fù)讀幻想幻想讀讀說明說明 1.1.未提交讀未提交讀 可可可可可可包含未提交數(shù)據(jù)的讀包含未提交數(shù)據(jù)的讀2.2.已提交讀已提交讀 * *否可可可可讀取提交過的數(shù)據(jù),否則等待讀取提交過的數(shù)據(jù),否則等待3.3.可重復(fù)讀可重復(fù)讀否否可可查詢期間,不允許其他事務(wù)對本結(jié)果集查詢期間,不允許其他事務(wù)對本結(jié)果集updateupdate4.4.可序列化可序列化否否否查詢期間,不允許其他事務(wù)對本結(jié)果集查詢期間,不允許其他事務(wù)對本結(jié)果集insertinsert或或deletedeleteCopyright (C) 2011 Indeed

27、 Information Technology Co., Ltd. 隔離級別與鎖隔離級別未提交讀EX:EX:未提交讀:未提交讀: (臟讀、不可重復(fù)讀、幻想讀)(臟讀、不可重復(fù)讀、幻想讀)意義:包含未提交數(shù)據(jù)的讀。例如,在多用戶環(huán)境下,用戶意義:包含未提交數(shù)據(jù)的讀。例如,在多用戶環(huán)境下,用戶B B更改了某行。用戶更改了某行。用戶A A在用戶在用戶B B提交更改之提交更改之前讀取已更改的行。如果此時用戶前讀取已更改的行。如果此時用戶B B再回滾更改,則用戶再回滾更改,則用戶A A便讀取了邏輯上從未存在過的行。(如圖便讀取了邏輯上從未存在過的行。(如圖演示)演示)演示:演示:1 1)用戶)用戶B B

28、: BEGIN TRAN BEGIN TRAN UPDATE COUPON_ABNOR SET MSG_FLG = 1 WHERE CONTENT_ID = 461 UPDATE COUPON_ABNOR SET MSG_FLG = 1 WHERE CONTENT_ID = 4612 2)用戶)用戶A A: SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED(此句不寫即默認(rèn)為(此句不寫即默認(rèn)為READ COMMITTEDREAD COMMITTED模模

29、式)式) SELECT MSG_FLG FROM COUPON_ABNOR WHERE CONTENT_ID = 461 SELECT MSG_FLG FROM COUPON_ABNOR WHERE CONTENT_ID = 461(此時將查到值為(此時將查到值為1 1)3 3)用戶)用戶B B: ROLLBACK ROLLBACK(此時撤消了步驟(此時撤消了步驟1 1的的UPDATEUPDATE操作,則用戶操作,則用戶A A讀到的錯誤數(shù)據(jù)被稱為臟讀)讀到的錯誤數(shù)據(jù)被稱為臟讀)Copyright (C) 2011 Indeed Information Technology Co., Ltd.

30、隔離級別與鎖隔離級別可提交讀EX:EX:提交讀:(臟讀、不可重復(fù)讀提交讀:(臟讀、不可重復(fù)讀 、幻想讀、幻想讀 ) “”可以可以 意義:指定在讀取數(shù)據(jù)時(控制共享鎖)以避免臟讀。此隔離等級的主要作用是避免臟讀。意義:指定在讀取數(shù)據(jù)時(控制共享鎖)以避免臟讀。此隔離等級的主要作用是避免臟讀。演示演示: :1.1.不可臟讀不可臟讀1 1)用戶)用戶B B: BEGIN TRAN BEGIN TRAN UPDATE COUPON_ABNOR SET MSG_FLG = 1 WHERE CONTENT_ID = 461 UPDATE COUPON_ABNOR SET MSG_FLG = 1 WHERE

31、 CONTENT_ID = 4612 2)用戶)用戶A A: SET TRANSACTION ISOLATION LEVEL READ COMMITTED SET TRANSACTION ISOLATION LEVEL READ COMMITTED SELECT MSG_FLG FROM COUPON_ABNOR WHERE CONTENT_ID = 461 SELECT MSG_FLG FROM COUPON_ABNOR WHERE CONTENT_ID = 461(上句設(shè)置了提交讀模式,則此(上句設(shè)置了提交讀模式,則此 時將會查不到數(shù)據(jù),顯示查詢等待中,直到用戶時將會查不到數(shù)據(jù),顯示查詢等

32、待中,直到用戶B B進(jìn)行了進(jìn)行了ROLLBACKROLLBACK或者或者COMMITCOMMIT操作后,此語句才操作后,此語句才 會生效)會生效)3 3)用戶)用戶B B: COMMIT COMMIT4 4)用戶)用戶A A: 查詢出結(jié)果查詢出結(jié)果Copyright (C) 2011 Indeed Information Technology Co., Ltd. 隔離級別與鎖隔離級別可重復(fù)讀EX:EX:可重復(fù)讀可重復(fù)讀 :意義:在多用戶環(huán)境下,用戶意義:在多用戶環(huán)境下,用戶A A開了一個事務(wù),并且先對開了一個事務(wù),并且先對testtest表的某條記錄做了查詢(表的某條記錄做了查詢(select

33、 select * * from test where name = AAfrom test where name = AA),接著用戶),接著用戶B B對對testtest表做了更新并提交(表做了更新并提交(update test setupdate test set age=25 where name=AA age=25 where name=AA),這時),這時A A再去查再去查testtest表中的這條記錄,第一次讀到的表中的這條記錄,第一次讀到的ageage值為值為1212,第二,第二次為次為2525,兩次讀到的數(shù)據(jù)不一樣,稱之為非重復(fù)讀。,兩次讀到的數(shù)據(jù)不一樣,稱之為非重復(fù)讀。演示

34、:演示:1 1)用戶)用戶A:A: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ SET TRANSACTION ISOLATION LEVEL REPEATABLE READ BEGIN TRAN BEGIN TRAN SELECT MSG_FLG FROM COUPON_ABNOR WHERE CONTENT_ID = 461 SELECT MSG_FLG FROM COUPON_ABNOR WHERE CONTENT_ID = 4612) 2) 用戶用戶B:B: UPDATE COUPON_ABNOR SET MSG_FLG = 1 WH

35、ERE CONTENT_ID = 461 UPDATE COUPON_ABNOR SET MSG_FLG = 1 WHERE CONTENT_ID = 461 (等待中)(等待中)3) 3) 用戶用戶A:A: COMMIT TRANSACTION COMMIT TRANSACTION4 4)用戶)用戶B UPDATEB UPDATE成功成功Copyright (C) 2011 Indeed Information Technology Co., Ltd. 隔離級別與鎖隔離級別可序列化 EX:EX:可序列化可序列化 : 意義:在多用戶環(huán)境下,用戶意義:在多用戶環(huán)境下,用戶A A開啟了一個事務(wù),并

36、查詢開啟了一個事務(wù),并查詢testtest表中的所有記錄,然后用戶表中的所有記錄,然后用戶B B在自己的在自己的事務(wù)中插入(或刪除)了事務(wù)中插入(或刪除)了testtest表中的一條記錄并提交事務(wù),此時用戶表中的一條記錄并提交事務(wù),此時用戶A A再去執(zhí)行前面的查詢整張表記再去執(zhí)行前面的查詢整張表記錄的操作,結(jié)果會多出(少了)一條記錄,此操作稱之為幻象。(如圖演示)錄的操作,結(jié)果會多出(少了)一條記錄,此操作稱之為幻象。(如圖演示)演示:演示:1 1)用戶)用戶A:A: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE SET TRANSACTION IS

37、OLATION LEVEL SERIALIZABLE BEGIN TRAN BEGIN TRAN SELECT MSG_FLG FROM COUPON_ABNOR WHERE ABNORCOUPON_ID = 0000000000000000000 SELECT MSG_FLG FROM COUPON_ABNOR WHERE ABNORCOUPON_ID = 00000000000000000002) 2) 用戶用戶B:B: INSERT INTO INSERT INTO COUPON_ABNOR(ABNORCOUPON_ID,RGST_ID,TIME_ORIGIN,ABNOR_CODE,ST

38、ORE_ID,MSG_FLG) COUPON_ABNOR(ABNORCOUPON_ID,RGST_ID,TIME_ORIGIN,ABNOR_CODE,STORE_ID,MSG_FLG) VALUES(VALUES(0000000000000000000,11,getdate(),1,CS11,0) -(0000000000000000000,11,getdate(),1,CS11,0) -(等待中等待中) )3 3)用戶)用戶A:A: COMMIT TRANSACTION COMMIT TRANSACTIONCopyright (C) 2011 Indeed Information Techn

39、ology Co., Ltd. 隔離級別與鎖隔離級別小結(jié)1. 1. 未提交讀:未提交讀: 主動主動 增強(qiáng)自身讀能力增強(qiáng)自身讀能力2. 2. 提交讀:提交讀: 主動主動 降低自身讀能力降低自身讀能力3. 3. 可重復(fù)讀:可重復(fù)讀: 主動主動+ +被動被動 降低自身讀能力降低自身讀能力+ +增強(qiáng)事務(wù)自增強(qiáng)事務(wù)自身保護(hù)力身保護(hù)力4. 4. 可序列化:可序列化: 主動主動+ +被動被動 降低自身讀能力降低自身讀能力+ +增強(qiáng)事務(wù)自增強(qiáng)事務(wù)自身保護(hù)力身保護(hù)力Copyright (C) 2011 Indeed Information Technology Co., Ltd. 隔離級別與鎖鎖做出了以上分析,現(xiàn)在我們可能會存在這樣的疑問,到底做出了以上分析,現(xiàn)在我們可能會存在這樣的疑問,到底在執(zhí)行在執(zhí)行SQLSQL語句的時候發(fā)出什么樣的鎖呢?語句的時候發(fā)出什么樣的鎖呢?這就由事務(wù)的這就由事務(wù)的隔離級別決定隔離級別決定了。一般情況:了。一般情況:讀語句讀語句(select)(select)發(fā)出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論