版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第13章 事務處理,事務的定義,事務的性質-ACID,ACID 原子性A: 事務處理是組成對象的最小單元。要么整體成功;要么整體失敗。 一致性C:所有的改變都以一致的方式進行,系統(tǒng)從一個有效狀態(tài)進入另一個有效狀態(tài)。 隔離性I:在同一時間進行的事務處理相互獨立。 持久性D:如果提交了一個事務處理,產生的效果將是不變的,即使系統(tǒng)失敗,也是如此。,事務處理控制語句,BEGIN TRANSACTION COMMIT TRANSACTION ROLLBACK TRANSACTION,事務缺陷-臟讀,臟讀:在事務提交前,它對數據所做的修改對其他事務來說是可見的。是危害最大的事務完整性缺陷。 Set Tra
2、nsaction Isolation Level Read Committed; Use DatabaseName - Transaction-1 Begin Transaction Update Customer Set Nickname=XXX Where CustomerID=1 -Transaction-2 Set Transaction Isolation Level Read UnCommitted Select Nickname From Customer Where CustomerID=1 -Transaction-1 Commit Transaction,事務缺陷-不可重復
3、讀,不可重復讀:如果隔離性是完全的,一個事務不應看到該事務外的數據修改。 - Transaction-1 Set Transaction Isolation Level Read Committed; Use DatabaseName Begin Transaction Select Nickname From Customer Where CustomerID=1 -Transaction-2 Update Customer Set Nickname=XXX Where CustomerID=1 Commit Transaction -T-2提交后T-1再次檢索同一行,如能看到T-2更新后的
4、值,則說明存在不可重復讀缺陷。 Select Nickname From Customer Where CustomerID=1 Commit Transaction,事務缺陷-虛幻行,是危害最小的事務完整性缺陷。也是指事務的更新操作不僅影響結果集的數據值,還導致Select語句返回不同的記錄集。 - Transaction-2 Begin Transaction Select * From Customer Where Nickname=Missy -Transaction-1 Begin Transaction Update Customer Set Nickname=Missy Wher
5、e CustomerID=1 Commit Transaction -Transaction-2如果隔離性是完全的,T2再次執(zhí)行同樣的Select命令時,應得到與以前相同的記錄集。 Select * From Customer Where Nickname=Missy Commit Transaction,隔離級別-1,數據庫可通過調整隔離級別來控制允許的事務缺陷。ANSI SQL-92定義了4個隔離級別。SQL Server使用鎖來實現隔離級別,默認隔離級別為已提交讀。 級別1:未提交讀:最不嚴格的隔離級別,不能防止任何事務缺陷,根本沒有在事務之間提供隔離。這種模式只能確保數據不會受損,而不
6、能處理行爭用。 級別2:已提交讀: SQL Server默認隔離級別。 級別3:可重復讀:能夠防止臟讀和不可重復讀。,隔離級別-2,級別4:可序列化:最嚴格的隔離級別,能夠防止所有事務缺陷。這種設置雖然提供了完全的事務隔離性,但將導致嚴重的鎖爭用并降低性能。 SQL Server 新增隔離: 快照隔離:它創(chuàng)建要更新的數據的快照拷貝(TempDB)。在更新期間,閱讀事務能夠繼續(xù)讀取原始數據,更新被提交后,將覆蓋原始數據??煺崭綦x消除了讀取事務和寫入事務之間的爭用。但爭用并未完全消失,而是轉移到寫出事務和寫入事務之間。如果第二個寫入事務試圖更新正在被更新的資源,它將被阻塞。,隔離級別-3,已提交讀
7、快照:其行為與已提交讀相同,但寫入事務和讀取事務之間不存在爭用。,SQL Server 的鎖機制-鎖,可以認為SQL Server中有兩個進程:查詢處理器和鎖管理器。 鎖管理器的目標是通過創(chuàng)建和釋放鎖盡可能高效地確保事務完整性。 每個鎖都有的三個屬性: 粒度(Granularity):鎖的大小 模式(Mode):鎖的類型 持續(xù)時間(Duration):鎖的隔離模式,SQL Server 的鎖機制-鎖粒度,鎖控制的數據可以小到一行記錄,也可大到整個數據庫。根據鎖的粒度,可采用不同的鎖組合來滿足特定的鎖定需求。 可加鎖的對象:記錄、表、頁、區(qū)域和數據庫等。,SQL Server 的鎖機制-鎖管理器
8、,SQL Server 具有自動和強制鎖功能。 SQL Server 的鎖管理器試圖在鎖大小和數量之間尋求平衡,以獲得最佳的性能。矛盾的焦點在并發(fā)性(較小的鎖可以允許更多的事務同時訪問數據)和性能(鎖越少速度越快)。為達到平衡,鎖管理器動態(tài)地從一組鎖切換為另一組鎖。 動態(tài)鎖的好處: 無需編程,就可自動在性能和并發(fā)性之間取得最佳平衡。 隨著數據庫的增長,鎖管理器將不斷應用合適的鎖粒度,確保數據庫保持良好的性能。 動態(tài)鎖定簡化了管理工作。,SQL Server 的鎖機制-鎖切換,25個行鎖可能升級為一個頁鎖。 然后,如果在同一個區(qū)的其他4個頁面中包含另外25個被鎖定的行,頁鎖和這25個行鎖可能被升
9、級為一個區(qū)鎖,因為該區(qū)中,有超過50%的頁面都受到了鎖定的影響。 如果有足夠的區(qū)被鎖住,這些鎖可能升級為一個表鎖。,SQL Server 的鎖機制-鎖模式/類型-1,鎖模式決定了鎖的用途。 共享鎖S:讀取鎖,表示“正在查看數據”。若事務T對數據對象X加上共享鎖,則其他事務只能對X再加共享鎖,不能加排他鎖,從而保證了其他事務可以讀X,但在T釋放X上的鎖之前不能對X做任何修改。 排他鎖X:寫鎖,若事務T對數據對象X加上排他鎖,則只允許事務T獨占數據項X,其他事務都不能對X加任何類型的鎖,直到T釋放X上的鎖,從而避免其他事務讀取不一致的數據。 更新鎖U:它并不是事務執(zhí)行更新時使用的鎖(此時應使用排他
10、鎖)。更新鎖意味著事務即將使用排他鎖,它當前正在掃描數據,以確定要使用排他鎖鎖定哪行。用來預定對某對象施加X鎖,它允許其他事務讀,但不允許再施加U鎖和X鎖。當被讀取的對象要被更新時,升級為X鎖。U鎖直到事務結束時才能釋放。,SQL Server 的鎖機制-鎖模式/類型-2,意向鎖:是一種用于警示的鎖,告訴其他事務即將要發(fā)生一些事情。主要目的是提高性能。所以類型和粒度都可以使用意向鎖。如:IS、SIX、IX。 意向鎖是共享鎖或派他鎖的預先請求,解決了兩個性能問題:層次鎖定和永久鎖阻塞。 SQL Server 使用意向鎖向更高的數據層次傳播鎖。 如:當事務1獲得一個行鎖后,它將同時對該行所屬的頁和
11、表放置意向鎖。,SQL Server 的鎖機制-鎖模式/類型-3,通過允許獲得鎖的事務在更大范圍設置意向鎖,將檢查鎖的事務的工作交給了建立鎖的事務來完成。這樣,雖然建立鎖的事務需要同時加上三個鎖,但以后其他事務在檢查鎖時就可以少做數百次的搜索。 意向鎖還避免了嚴重的共享鎖爭用問題,稱為永久鎖阻塞。如:事務獲得意向排他鎖IX后,其他事務就無法獲得共享鎖。意向排他鎖并非完全的排他鎖,但它表示即將獲得排他鎖。,SQL Server 的鎖機制-鎖模式/類型-2,架構鎖(Sch-M, Sch-S) 用于保護數據庫架構。 在任何查詢執(zhí)行期間,SQL Server都將使用架構穩(wěn)定鎖(Sch-S)來禁止執(zhí)行任
12、何數據定義語言(DDL)命令。 僅當SQL Server調整數據庫的物理結構時才使用架構修改鎖(Sch-M)。如果SQL Server向表中添加列,在該架構修改操作期間,架構鎖將禁止其他所有事務查看或修改相應的數據。,SQL Server 的鎖機制-鎖的兼容性,SQL Server 的鎖機制-鎖的持續(xù)時間,它由事務的隔離級別決定。隔離級別越嚴,鎖的持續(xù)時間越長。,監(jiān)視鎖定和阻塞,使用Management Studio的“摘要”-“報表”。 使用活動監(jiān)視器:“對象資源管理器”-“管理”-“活動監(jiān)視器”,它每5秒自動刷新一次。 使用Profiler:跟蹤事件Error and WarningsBl
13、ocked Process Report 必須啟動高級選項并設置Blocked Process Threshold如: sp_Configure show advanced options,1; Go Reconfigure; Go sp_Configure blocked process threshold,1; /*1秒*/ Go Reconfigure;,死鎖,死鎖發(fā)生時, SQL Server 選擇完成工作量最少的事務作為死鎖犧牲品,以讓其他事務繼續(xù)執(zhí)行。 事務也可自愿成為死鎖犧牲品,使用Set Deadlock Priority LOW 避免死鎖應遵循的原則: 事務應簡明扼要,不包括任何不應放在事務中的代碼。以使事務應盡量小且應盡快提交。 絕不要編寫依賴用戶輸入的事務。 編寫批處理和過程時,盡可能讓它們以相同的順序獲得鎖。 規(guī)劃物理架構和小心選擇聚集索引,確??赡鼙煌瑫r查詢的數據存儲在數據頁盡可能近的地方。減小鎖的影響范圍有助于防止鎖升級,且鎖粒度越小,越有助于避免鎖爭用。 除非確實需要,否則不要提高隔離級別,因為隔離級別越高,鎖的持續(xù)時間越長
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)技術智能監(jiān)控系統(tǒng)布設協議2024版B版
- 個性化2024版動力煤托盤協議示例版
- 專業(yè)教師2024年度聘用協議范例版B版
- 閱讀理解技巧講座
- 二零二四年云服務租賃協議
- 2025年度科技園區(qū)場地無償使用及知識產權共享協議4篇
- 2025年度叉車維修及配件供應一體化服務合同4篇
- 2025年度場崗位員工保密協議執(zhí)行細則4篇
- 專屬委托銷售代表協議樣式(2024)版A版
- 2025年度影視基地場地租賃合同24篇
- 民航概論5套模擬試卷考試題帶答案
- 2024屆中國電建地產校園招聘網申平臺高頻500題難、易錯點模擬試題附帶答案詳解
- 名表買賣合同協議書
- COCA20000詞匯音標版表格
- 滬教版七年級數學上冊專題06圖形的運動(原卷版+解析)
- JTG-T-F20-2015公路路面基層施工技術細則
- 光伏發(fā)電站集中監(jiān)控系統(tǒng)通信及數據標準
- 建筑垃圾減排及資源化處置措施
- 2024年遼寧石化職業(yè)技術學院單招職業(yè)適應性測試題庫附答案
- 中西方校服文化差異研究
- 2024年一級建造師考試思維導圖-市政
評論
0/150
提交評論