




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據庫系統安全數據庫原理及應用基于SQLServer2022(第3版)目錄目錄8.1數據庫系統安全的概念及特點8.2數據庫安全技術和機制 8.3身份驗證和訪問控制8.4數據備份及恢復8.5并發控制和封鎖技術8.6實驗8數據備份及恢復操作 8.7本章小結8.8練習與實踐8(注:云作業)教學目標
教學目標●理解數據庫安全概念及特點及風險●掌握數據庫系統安全關鍵技術、策略和機制●理解角色、權限管理及完整性控制●掌握數據庫及數據備份及恢復技術和方法●理解并發控制和封鎖技術同步實驗(上機)友情提示重點重點8.1.1數據庫系統安全相關概念
1.數據安全的概念
數據安全是指以安全保護措施確保數據的機密性、完整性、可用性、可控性和可審查性。
由于大量重要機密數據集中存儲在數據庫中,并供多用戶共享,所以,必須加強對數據庫訪問的安全控制和數據安全防護。主要通過對數據庫系統的身份認證、訪問控制、存取與傳輸管控、加密、使用、應急處理及審計等安全機制和策略。
2.數據庫及其系統安全的概念
數據庫安全(DataBaseSecurity)通常是指物理數據庫的完整性、邏輯數據庫的完整性、存儲數據的安全性、可審計性、訪問控制、身份驗證和可用性等。主要包括數據庫本身的安全和數據及其文件安全等。數據庫安全的特征主要是針對數據而言的,包括數據獨立性、數據安全性、數據完整性、并發控制、故障恢復等。
8.1數據庫安全概念及特點
數據泄露事件的頻率、規模和成本都在快速增長。GoUpSec統計2022年全球各地數據泄露事件,其中政府部門、國際組織、門戶網站、國防機構、航空公司、銀行、汽車制造商、學校、酒店、醫療等行業已成為重災區,數億用戶的隱私和安全受到威脅,包括“數據泄露后遺癥”在內的已知和潛在損失高達數億美元。根據Ponemon發布的《2022年數據泄露成本報告》,全球數據泄露和平均成本均創歷史新高。案例8-1
數據庫系統安全是指為數據庫系統采取的安全保護措施,防止系統和數據不遭到破壞、更改和泄漏。重點目標是確保系統和數據安全,主要通過DBMS以各種防范措施防止非授權使用數據庫及其數據的破壞、更改和泄露,以及用戶權限管理、身份認證、存取控制、視圖、密碼加密、備份恢復等技術和管理手段進行安全防范。
從系統與數據的關系上,數據庫系統安全主要利用數據庫管理系統DBMS,在系統級統一管理控制數據庫及數據的存取和使用安全的機制,主要包括:1)系統的安全管理及設置,如法律法規、政策制度、實體安全等。2)用戶身份認證、系統運行安全和可執行的系統操作控制。3)數據庫系統漏洞隱患安全防范、訪問控制和權限管理等。4)用戶資源限制,包括訪問、使用、存取、維護與管理等。5)數據庫及數據加密、使用異常及應急故障防范和安全審計。6)機構或個人用戶操作對象可用存儲空間及設備設施安全。
8.1數據庫安全概念及特點
8.1.2數據庫安全風險分析
主要表現在以下三個層面:
管理層面:企事業機構在建立健全相關組織和安全管理人員的職責、制度及流程等,內部員工日常操作標準規范等疏忽。或第三方維護人員操作監控失效等,致使安全事件發生時,無法追溯并定位真實的操作者。
技術層面:數據庫系統本身缺陷和隱患。或數據庫系統內部操作不明,無法通過外部任何安全技術阻止內部用戶惡意操作、濫用資源和泄露機密信息等行為。審計層面:依賴于數據庫日志文件的審計方法,存在很多缺陷,數據庫審計功能的開啟會影響數據庫本身的性能、數據庫日志文件本身存在被篡改風險,難體現審計信息真實性。8.1數據庫安全概念及特點
常見數據庫的安全缺陷和隱患要素,主要包括:1)數據庫應用程序的研發、管理和維護等人為因素的疏忽。2)用戶對數據庫系統安全的忽視,安全設置和管理失當。3)一些部分數據庫系統安全機制威脅網絡低層安全。4)數據庫系統安全的極個別特性自身存在的不足和缺陷。5)數據庫系統用戶常用的賬號、密碼容易泄漏和破譯等。6)網絡操作系統平臺常見的一些主要漏洞隱患及后門等。7)網絡系統相關協議、配置、病毒及運行環境威脅等。8.1數據庫安全概念及特點
討論思考1)什么是數據安全、數據系統安全的概念?2)數據庫系統安全主要具體包括哪些方面?3)數據庫系統的安全風險體現在哪些方面?4)數據庫系統安全缺陷和隱患要素有哪些?8.2數據庫系統安全技術和機制
北京安華金和科技有限公司長期致力于幫助客戶應對數據庫安全領域的威脅。為了提高數據庫用戶的安全意識,快速反饋最新數據庫漏洞被利用方向,發布了《2019年上半年數據庫漏洞安全威脅報告》,用于快速跟蹤及反饋數據庫安全的發展態勢。信息化的發展正改變著人們的工作和生活,數據作為信息化的核心,正逐步成為全球關注的重點,數據庫系統漏洞隱患和數據共享帶來極大的安全風險。案例8-28.2.1數據庫系統安全常用技術常用的數據庫系統安全常用技術包括三大類:(1)預防保護類。主要包括身份認證、訪問管理、加密、防惡意代碼、防御和加固。(2)檢測跟蹤類。主體對客體的訪問行為需要進行監控和事件審計,防止在訪問過程中可能產生的安全事故的各種舉措,包括監控和審核跟蹤。(3)響應恢復類。網絡或數據意外出現安全事件,應確保在最短的時間內對其事件進行應急響應和備份恢復,盡快將其影響降至最低。8.2數據庫安全技術和機制
注意
圖8-1常用的網絡安全技術8.2.1數據庫安全常用技術常用8種數據庫安全常用技術:
1)身份認證(IdentityandAuthentication)2)訪問管理(AccessManagement)3)加密(Cryptography)4)病毒防范(Anti-Malware)5)加固(Hardening)6)監控(Monitoring)7)審核跟蹤(AuditTrail)8)備份恢復(BackupandRecovery)8.2數據庫安全技術和機制
注意8.2.2數據庫系統的安全策略和機制1.SQLServer的安全策略(1)管理規章制度方面的安全性(2)數據庫服務器物理方面的安全性(3)數據庫服務器邏輯方面的安全性2.SQLServer的安全管理機制 SQLServer的安全機制對數據庫系統的安全極為重要,包括:身份認證、訪問控制、審計、數據加密、視圖機制、特殊數據庫的安全規則等。8.2數據庫系統的安全策略和機制
注意:各種用戶對數據庫系統進行操作,必須滿足以下3個條件:(1)身份驗證。在登錄服務器時,必須通過操作系統級的身份認證。(2)用戶管理。要求是本數據庫系統用戶,或是數據庫系統的角色成員。(3)權限管理。必須具有對數據庫系統對象執行該操作的權限。
SQLServer2022的安全性管理可分為3個等級:(1)操作系統級的安全性(2)SQLServer級的安全性(3)數據庫級的安全性8.2數據庫安全技術和機制
討論思考1)常用的數據安全關鍵技術有哪幾類,分別起到什么作用?2)數據庫系統的安全策略通常主要包括哪幾個具體方面?3)SQLServer數據庫系統安全性管理分為哪幾個等級?4)用戶對數據庫進行操作必須滿足的條件有哪些?8.3身份驗證和訪問控制數據的安全性管理是數據庫服務器一項重要功能。SQLServer2022數據庫采用了非常復雜的安全訪問控制措施,數據庫安全管理主要體現在兩個方面:1)對用戶登錄進行身份驗證。當用戶登錄到數據庫系統時,系統以多種方式通過驗證該用戶賬戶和口令,包括確認用戶賬戶是否有效以及能否訪問數據庫系統等。2)對多種用戶進行的操作權限實施有效控制。當用戶登錄到數據庫系統身份驗證后,還要對操作數據庫中數據的指定權限進行控制,只能在允許的權限內操作。案例8-3
8.3身份驗證和訪問控制8.3.1身份驗證及權限管理
1.身份驗證及驗證模式
身份驗證模式是指系統確認用戶的方式,身份驗證使用登錄賬號,并只驗證該用戶連接SQLServer實例的能力。SQLServer2022中支持兩種身份驗證模式:
Windows驗證模式、SQLServer驗證模式。(1)Windows驗證模式用戶登錄Windows時進行身份驗證,登錄SQLServer時就不再進行身份驗證了。(2)SQLServer驗證模式在SQLServer驗證模式,對登錄用戶要身份驗證。系統管理員必須設定登錄驗證模式的類型為混合驗證模式。
注意8.3.1身份驗證及權限管理
2.權限管理概念及作用
權限是操作和訪問數據的通行證。可以利用權限保護不同安全對象,并使各種資源受到安全保護控制。主體(Principal)和安全對象之間通過權限相關聯,SQL中主體可以請求系統資源的個體和組合過程。
權限用于管理控制用戶對數據庫系統對象的訪問,并指定用戶對數據庫可執行的操作,用戶可以設置服務器和數據庫系統的權限.主要具有3種權限:服務器權限、數據庫對象權限和數據庫權限。
8.3身份驗證和訪問控制GRANT{ALL|說明[,...n]}TO安全帳戶[,...n]REVOKE{ALL|說明[,...n]}FROM安全帳戶[,...n]DENY{ALL|說明[,...n]}TO安全帳戶[,...n]授予權限
收回權限
拒絕(否認)權限(1)服務器權限。允許DBA執行管理任務。這些權限定義在固定服務器角色(FixedServerRoles)中。其角色可以分配給登錄用戶而不能修改。常只將服務器權限授給DBA,而不需要修改或授權給別的用戶登錄。(2)數據庫對象權限。數據庫對象是授予用戶以允許其訪問數據庫中對象的一類權限,使用SQL語句訪問表或視圖具有對象權限。(3)數據庫權限。用于控制對象訪問和語句執行。對象權限使用戶可訪問存在于數據庫對象,還可給用戶分配權限。數據庫權限除了授權用戶可創建數據庫對象和備份外,還增加了一些更改數據庫對象的權限。一個用戶可直接分配到權限,也可作為一個角色中成員間接獲得權限。8.3身份驗證和訪問控制
8.3.2數據庫系統安全訪問控制SQLServer2022的安全訪問控制包含通過SQLServer身份驗證模式進入SQLServer實例,通過SQLServer安全性機制控制對SQLServer數據庫及其對象的操作。8.3身份驗證和訪問控制1.登錄名管理
登錄名管理包括創建登錄名、設置密碼策略、查看登錄名信息、修改和刪除登錄名。登錄名管理的方法,主要有兩種:(1)創建登錄名創建登錄名操作主要包括:創建基于Windows登錄名、創建SQLServer登錄名、查看登錄名信息。(2)修改和刪除登錄名數據庫管理員DBA定期檢查SQLServer用戶,執行修改或刪除登錄名。
參看案例8-4
創建登錄名操作8.3身份驗證和訪問控制
8.3.2數據庫安全訪問控制
2.監控錯誤日志用戶應時常查看SQLServer錯誤日志。在查看錯誤日志的內容時,主要應注意在正常情況下不應出現的錯誤消息。當瀏覽錯誤日志時,要特別注意以下的關鍵字:錯誤、故障、表崩潰、16級錯誤和嚴重錯誤等。查看日志方法有2種:利用SSMS查看日志,利用文本編輯器查看日志。3.記錄配置信息通常應當安排對配置信息的維護,特別是當配置信息修改時。使用系統過程sp_configure可以生成服務器的配置信息列表。當無法啟動SQLServer時,可以借助服務器的配置信息,并恢復其運行。主要操作步驟為:打開SSMS界面,選擇服務器單擊“連接”進入SSMS窗口,打開一個新查詢窗口輸入命令。
8.3身份驗證和訪問控制8.3.3用戶與角色管理1.用戶管理【案例8-4】使用SSMS菜單具體創建新用戶的操作過程,如圖8-2所示。8.3.3用戶與角色管理
2.角色的概念及管理(1)角色的概念角色(Role)是具有指定權限的用戶(組),用于管理數據庫訪問權限。根據角色自身的設置不同,一個角色可以看作是一個數據庫用戶或一組用戶。角色可以擁有數據庫對象(如表)并可將這些對象上的權限賦予其它角色,以控制所擁有的具體訪問對象的權限。另外,也可以將一個角色的成員(membership)權限賦予其它角色,便于允許成員角色使用它被賦予成員權限的角色的權限。角色分為兩類:服務器角色和數據庫角色。此外,SQLServer2022中還有一種角色被稱為應用程序角色。8.3身份驗證和訪問控制8.3.3用戶與角色管理2.角色管理
(2)服務器角色服務器角色也稱為“固定服務器角色”,是系統內置的,由于各種用戶不能創建新的服務器級角色。服務器級角色的權限作用域為服務器范圍。當SQLServer安裝時創建服務器級別上應用的大量預定義的角色,每個角色對應著相應的管理權限。其固定服務器角色用于授權給數據庫管理員DBA,擁有某種或某些角色的DBA就會獲得與相應角色對應的服務器管理權限。用戶可以向服務器角色中添加SQLServer登錄名、Windows賬戶和Windows組。(3)數據庫角色SQLServer2022中有兩種類型的數據庫級角色:數據庫中預定義的“固定數據庫角色”和可以創建的“用戶定義數據庫角色”。8.3身份驗證和訪問控制8.3.3用戶與角色管理
2.角色的概念及管理(4)應用程序角色應用程序角色是特殊的數據庫角色,用于允許用戶通過特定應用程序獲取特定數據。應用程序角色不包含任何成員,而且在使用它們之前要在當前連接中將它們激活。8.3身份驗證和訪問控制
討論思考1)什么是身份驗證?SQLServer中兩種身份驗證模式是什么?2)什么是權限?SQLServer中有幾種權限,各自有什么作用?3)什么是數據庫的角色,分為哪幾類?什么是服務器角色?4)數據庫系統角色的主要作用及其常見的類型具體有哪些?8.4數據備份及恢復8.4.1數據備份及常用方法選取備份策略原則是:以最小的代價恢復數據。備份與恢復是相互聯系的,備份策略與恢復應結合起來考慮。1.數據備份的內容SQLServer數據庫需備份的內容分為數據文件(包括主要數據文件和次要數據文件)、日志文件兩部分。根據每次備份的目標不同,可以將備份分為數據備份和日志備份。
數據庫管理系統采取了各種措施保證數據庫的安全性和完整性,還是需要“有備無患”防止可能出現的各種意外故障,如,存儲媒體損壞、用戶操作失誤、硬件故障、自然災難、計算機病毒或攻擊等。這些故障會造成系統運行事務的異常中斷,影響數據的正確性,甚至會破壞數據庫,使數據庫中的數據破壞或丟失。
案例8-58.4.1數據備份方法2.數據備份的介質備份介質是指將數據庫備份到目標載體,即備份到何處。SQLServer2022中,常用兩種備份介質:(1)硬盤(備份本地文件、備份網絡文件)(2)云盤(可用于通過網絡進行備份)3.數據備份的策略對于系統數據庫和用戶數據庫,備份的策略及方式不同。(1)系統數據庫。當系統數據庫Master、Msdb和Model中被修改后,系統都會自動備份。(2)用戶數據庫。數據庫創建或加載時,應備份數據庫;當創建索引時應備份,以便恢復。8.4數據備份及恢復注意:備份到磁盤中有兩種形式即文件形式、備份設備的形式。8.4數據備份及恢復
8.4.1數據備份方法
4.數據備份的常用方法數據庫備份常用的兩類方法:完全備份和差異備份。完全備份每次都備份到整個數據庫或事務日志,差異備份只備份自上次備份以來發生變化的新數據。差異備份也稱為增量備份。
數據備份的類型:(1)完整備份(2)完整差異備份(3)部分備份(4)部分差異備份(5)文件(組)備份(6)文件差異備份(7)事務日志備份8.4.1數據備份方法
5.數據備份的對象利用8.3節所述,在SQLServer中,可以做備份的角色成員為:(1)數據庫系統的固定服務器角色sysadmin(限于系統管理員)。(2)數據庫系統中固定數據庫角色db_owner(數據庫的擁有者)。(3)固定數據庫角色db_backupoperator(允許數據庫備份的用戶)。除上述角色外,還可以通過授權允許其它角色進行數據庫備份。8.4數據備份及恢復8.4.1數據備份方法
6.數據備份的限制操作在執行數據庫備份的過程中,允許用戶對數據庫繼續操作,但不允許用戶在備份時執行下列操作:
創建或刪除數據庫文件
創建索引
不記日志的命令8.4數據備份及恢復
注意:若在系統正執行上述操作中的任何一種時試圖進行備份,則備份進程不能執行。8.4數據備份及恢復8.4.2數據恢復及應用
數據恢復(DataRestore)是指將備份到存儲介質上的數據再恢復(還原)到應用系統中的過程。同數據備份是一個逆過程,可能需要涉及整個數據庫系統的恢復。
注意:數據恢復是與數據備份相對應的系統維護和管理操作。系統進行恢復操作時,先執行一些系統安全性檢查,包括檢查所要恢復的數據庫是否存在、數據庫是否變化以及數據庫文件是否兼容等,然后根據所采用的數據庫備份類型采取相應的恢復措施。
8.4.2數據恢復及應用
1.數據恢復的準備
數據庫恢復的準備工作包括:系統安全性檢查和備份介質驗證。在進行恢復時,系統先執行安全性檢查、重建數據庫及其相關文件等操作,保證數據庫安全的恢復,這是數據庫恢復必要的準備,可以防止錯誤的恢復操作。8.4數據備份及恢復
注意:當系統發現出現了以下情況時,恢復操作將不進行:(1)準備恢復的數據庫已存在,但在備份文件中記錄的數據庫與其不同;(2)在服務器上的數據庫文件集與備份中的數據庫文件集不一致;(3)未提供恢復數據庫所需的所有文件或文件組。8.4.2數據恢復及應用
2.數據庫的故障和恢復策略數據庫運行過程中可能會出現各種各樣的故障,這些故障可分為3類:事務故障、系統故障和介質故障。根據故障類型的不同,應該采取不同的恢復策略。(1)事務故障及其恢復(2)系統故障及其恢復
(3)介質故障及其恢復
8.4數據備份及恢復8.4.2數據恢復及應用故障發生后對數據庫的影響有兩種可能性:1)數據庫沒有被破壞,數據出現不一致問題。由事務故障和系統故障引起,恢復時無需重裝數據庫副本,直接根據日志文件,撤銷故障發生時未完成的事務,并重做己完成事務,恢復到正確狀態。這類故障的恢復由系統在重新啟動時自動完成,無需用戶干預。2)數據庫本身被破壞。由介質故障引起,恢復時將最近一次備份的數據裝入,并借助日志文件,對數據庫進行更新,從而重建數據庫。這類故障的恢復不能自動完成,先由DBA利用DBMS重裝最近備份的數據庫副本和相應的日志文件的副本,再執行系統提供的恢復命令。8.4數據備份及恢復8.4.2數據恢復及應用
3.數據恢復類型
數據恢復操作通常有3種類型:全盤恢復、個別文件恢復和重定向恢復。
(1)全盤恢復。也稱為系統恢復,是將備份到介質上的指定系統信息全部備份到其原來位置。
(2)個別文件恢復。是將個別已備份的最新版文件恢復到原來的地方。
(3)重定向恢復。是將備份的文件或數據,恢復到另一個不同的位置或系統,而不是做備份操作時其所在的位置。8.4數據備份及恢復8.4.2數據恢復及應用
4.恢復模式
恢復模式是一個數據庫屬性,用于控制數據庫備份和還原操作的基本行為。如恢復模式控制了將事務記錄在日志中的方式、事務日志是否需要備份以及可用的還原操作。
(1)恢復模式的優點:可以簡化恢復計劃,并簡化備份和恢復過程,明確系統操作要求之間的權衡,明確可用性和恢復要求之間的權衡。(2)恢復模式的分類在SQL中,有3種恢復模式:簡單恢復模式、完整恢復模式和大容量日志恢復模式。8.4數據備份及恢復
8.4.2數據恢復及應用
5.執行恢復數據庫操作(1)使用SSMS恢復數據庫(2)使用備份設備恢復(3)使用T-SQL語句恢復數據庫8.4數據備份及恢復1)數據備份的重要作用和主要內容有哪些?2)數據備份常用的各種主要備份類型及其方式?3)什么是數據恢復?數據恢復前需注意哪些問題?4)數據庫運行故障有哪些?其恢復模式有哪些?
討論思考
8.5.1并發操作產生的問題網絡系統出現多用戶的并發事件,主要原因是爭用網絡資源,導致的事務阻塞或數據不一致。事務就是一個(操作)處理的單元,這個操作可能是一行Update語句,也可能是異常復雜的一系列增刪改查操作。事務具有4個基本特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)任何數據庫管理系統DBMS都支持這4種特性,只是實現方式不同。8.5并發控制和封鎖技術
現代網絡信息系統幾乎不存在單用戶操作,基本上都是多用戶操作,多個用戶同時共享數據庫,多個用戶可能在同一時刻去訪問或修改同一部分數據,這樣就引起一個問題——并發事件。這樣可能導致數據庫中的數據不一致,這時就需要對事務進行并發控制。案例8-68.5.2并發控制概述1.并發控制的基本概念并發控制是對數據庫系統中多用戶程序同時并行存取的控制機制,目的是避免數據的丟失修改、無效數據的讀出與不可重復讀數據現象的發生,從而保持數據的一致性。事務是數據庫并發控制的基本單位。是用戶定義的一個操作序列。對事務的操作實行“要么都做,要么都不做”原則,將事務作為一個不可分割的最小獨立工作單位。通過事務SQLServer可將邏輯相關的一組操作綁定在一起,以便服務器保持數據的完整性。如銀行轉賬。8.5并發控制和封鎖技術
2.并發控制需要處理的問題
事務的并發操作帶來的數據不一致問題主要包括:(1)丟失更新。當幾個事務選擇同一行(數據記錄),導致某個更新沒有及時保存,發生丟失更新使數據缺失問題。不應允許兩個事務同時更新相同數據,以免其中一個事務的更新操作丟失。8.5并發控制和封鎖技術例如:最初有一份原始的電子文檔,文檔人員W和L同時修改此文檔,當修改完成之后保存時,最后修改完成的文檔必將替換第一個修改完成的文檔,那么就造成了數據丟失更新的后果。如果在文檔人員W修改并保存之后,文檔人員L再進行修改則可以避免此問題。2.并發控制需要處理的問題(2)讀“臟”數據(臟讀)。指一個事務正在訪問數據,而其它事務正在更新該數據,但尚未提交,此時就會發生臟讀問題,即第一個事務所讀取的數據是“臟”(不正確)數據,它可能會引起錯誤。8.5并發控制和封鎖技術例如:文檔人員L復制了文檔人員W正在修改的文檔,并將文檔人員W的文檔發布,此后,文檔人員W認為文檔中存在著一些問題需要重新修改,此時文檔人員L所發布的文檔就將與重新修改的文檔內容不一致,如果在文檔人員W將文檔修改完成并確認無誤的情況下,文檔人員L再復制文檔則可以避免此問題。2.并發控制需要處理的問題(3)不可重復讀。
當一個事務多次訪問同一行且每次讀取不同的數據時,會發生重復讀問題。同臟讀相似,由于該事務也是正在讀取其它事務正在更改的數據。當一個事務訪問數據時,另外的事務也訪問該數據并對其進行修改,因此就發生了由于第二個事務對數據的修改而導致第一個事務兩次讀到的數據不一樣的情況。產生數據的不一致性的主要原因是并發操作破壞了事務的隔離性。8.5并發控制和封鎖技術例如:文檔人員L兩次讀取文檔人員W的文檔,但在文檔人員L讀取時,文檔人員W又重新修改了該文檔中的內容,在文檔人員L第二次讀取文檔人員W的文檔時,文檔中的內容已被修改,此時就發生了不可重復讀的情況。如果文檔人員L在文檔人員W全部修改完成后讀取文檔,則可以避免該問題。2.并發控制需要處理的問題(4)幻讀。當一個事務對某行執行插入或刪除操作,而該行處于某個事務正在讀取行的范圍時發生幻讀問題。事務第一次讀的行范圍顯示出其中一行已不復存在于第二次讀或后續讀中,由于該行已被其它事務刪除。同樣,由于其它事務的插入操作,第二次讀或后續讀顯示有一行已不在原始讀中。8.5并發控制和封鎖技術例如:文檔人員L更改了文檔人員W所提交的文檔,但當文檔人員L將更改后的文檔合并到主、副本時,卻發現文檔人員W已將新數據添加到該文檔中。如果文檔人員L在更改文檔之前,不會有人將新數據添加到該文檔中,則可以避免該問題。8.5.3常用的封鎖技術1.封鎖技術封鎖(locking)是實現數據庫并發控制的主要技術。可以防止用戶讀取正在由其它用戶更改的數據,并可以防止多個用戶同時更改相同數據。如果不用封鎖技術,則數據庫中的數據可能在邏輯上不正確,并且對于數據的查詢可能會產生意外結果。具體來講,封鎖可以防止丟失更新、臟讀、不可重復讀、幻讀等并發操作帶來的數據不一致性問題。8.5并發控制和封鎖技術8.5.3常用的封鎖技術1.封鎖技術當兩個事務分別封鎖某個資源,而又分別等待對方釋放其封鎖的資源時,就會發生死鎖(Deadlock)。8.5并發控制和封鎖技術T2T1R1R2使用使用T2請求R1T1請求R28.5.3常用的封鎖技術1.封鎖技術活鎖(livelock)指的是任務或者執行者沒有被阻塞,由于某些條件沒有滿足,導致一直重復嘗試,失敗,嘗試,失敗。活鎖和死鎖的區別:處于活鎖的實體是在不斷的改變狀態,所謂的“活”,而處于死鎖的實體表現為等待;活鎖有可能自行解開,死鎖則不能。8.5并發控制和封鎖技術“活鎖”舉例:如果事務T1封鎖了數據R,事務T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖后,系統首先批準了T3的請求,T2仍然等待。然后T4又請求封鎖R,當T3釋放了R上的封鎖之后,系統又批準了T4的請求......T2可能永遠等待。8.5.3常用的封鎖技術
*2.鎖定粒度SQLServer中,可被封鎖的資源從小到大分別是行、頁、擴展盤區、表和數據庫,被封鎖的資源單位稱為鎖定粒度。上述5種資源單位其鎖定粒度是由小到大排列的。鎖定粒度不同,資源的開銷將不同,并且鎖定粒度與數據庫訪問并發度是一對矛盾,鎖定粒度大,系統開銷小,但并發度會降低;鎖定粒度小,系統開銷大,但并發度可提高。8.5并發控制和封鎖技術8.5.3常用的封鎖技術
3.封鎖模式SQLServer使用不同的鎖模式鎖定資源,這些鎖模式確定了并發事務訪問資源的方式。共有7種封鎖模式:分別是共享(Shared,S)、排它(Exclusive,X)、更新(Update,U)、意象(Intent)、架構(Schema)、鍵范圍(Key-range)、大容量更新(BulkUpdate,BU)8.5并發控制和封鎖技術8.5.3常用的封鎖技術
3.常用的封鎖模式(1)共享(S鎖、讀鎖):共享鎖允許并發事務讀取一個資源。當一個資源上存在共享鎖時,任何其它事務都不能修改數據。默認情況下,SQLServer會自動在需要讀取的數據上加上S鎖,表、頁和單獨的行(表或者索引上)都可以持有S鎖。通常情況下,SQLServer會在讀取完數據后馬上釋放S鎖,不需要等待事務結束。8.5并發控制和封鎖技術8.5.3常用的封鎖技術3.常用的封鎖模式(2)排它(X鎖、寫鎖):排它鎖可以防止并發事務對資源進行訪問。其它事務不能讀取或修改排它鎖鎖定的數據。當系統通過Insert、Update、Delete等操作修改數據時,會對相應的數據加X鎖。任何時候(事務范圍內),一個特定的數據資源上只能有一個X鎖。被修改的數據在事務提交或者回滾前,對于其它事務都是不可用的。8.5并發控制和封鎖技術8.5.3常用的封鎖技術3.常用的封鎖模式
*(3)更新鎖。更新鎖可以防止通常形式的死鎖。一般更新模式由一個事務組成,此事務讀取記錄,獲取資源(頁或行)的共享鎖,然后修改行,此操作要求鎖轉換為排它鎖。如果兩個事務獲得了資源上的共享鎖,然后試圖同時更新數據,則其中的一個事務將嘗試把鎖轉換為排它鎖。共享模式到排它鎖的轉換必須等待一段時間,因為一個事務的排它鎖與其它事務的共享鎖不兼容,這就是鎖等待。第二個事務試圖獲取排它鎖以進行更新。由于兩個事務都要轉換為排它鎖,并且每個事務都等待另一個事務釋放共享鎖,因此會發生死鎖,這就是潛在的死鎖問題。為避免這種情況的發生,可使用更新鎖。一次只允許有一個事務可獲得資源的更新鎖,如果該事務要修改鎖定的資源,則更新鎖將轉換為排它鎖,否則為共享鎖。8.5并發控制和封鎖技術8.5.3常用的封鎖技術3.常用的封鎖模式
*(4)意向鎖。意向鎖表示SQLServer需要在層次結構中的某些底層資源(如表中的頁或行)上獲取共享鎖或排它鎖。例如,放置在表級的共享意向鎖表示事務打算在表中的頁或行上放置共享鎖。在表級設置意向鎖可防止另一事務隨后在包含那一頁的表上獲取排它鎖。意向鎖可以提高性能,因為SQLServer僅在表級檢查意向鎖來確定事務是否可以安全地獲取該表上的鎖,而無須檢查表中的每行或每頁的鎖以確定事務是否可以鎖定整個表。8.5并發控制和封鎖技術8.5.3常用的封鎖技術3.常用的封鎖模式
*(5)架構鎖。執行表的數據定義語言操作(如增加列或刪除表)時使用架構修改鎖。當編譯查詢時,使用架構穩定性鎖。架構穩定性鎖不阻塞任何事務鎖,包括排它鎖。因此在編譯查詢時,其它事務(包括表上有排它鎖的事務)都能繼續運行,但不能在表上執行DDL操作。
*(6)鍵范圍鎖。鍵范圍鎖用于序列化的事務隔離級別,可以保護由T-SQL語句讀取的記錄集合中隱含的行范圍。鍵范圍鎖可以防止幻讀,還可以防止對事務訪問的記錄集進行幻想插入或刪除。8.5并發控制和封鎖技術8.5.3常用的封鎖技術3.常用的封鎖模式
*(7)大容量更新鎖。當將數據大容量復制到表,且指定了Tablock提示或者使用Sp_tableoption設置了Tablelockonbulk表選項時,將使用大容量更新鎖。大容量更新鎖允許進程將數據并發地大容量復制到同一表,同時可防止其它不進行大容量復制數據的進程訪問該表。8.5并發控制和封鎖技術8.5.4并發操作的調度數據庫系統以隨機的方式對并行操作調度,而不同的調度可能會產生不同的結果。若一個事務運行中不同時運行其它事務,則可認為該事務的運行結果為正常或預期的,因此將所有事務串行起來的調度策略是正確的調度策略。并發操作的結論:幾個事務的并行執行是正確的,當且僅當其結果與按某一次序串行地執行的結果相同。此并行調度策略稱為可串行化(Serializable)的調度。可串行性(Ser
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度財務咨詢服務合同
- 2024年09月河南濟源產城融合示范區面向社會招聘衛生健康事業單位人員聘用筆試歷年專業考點(難、易錯點)附帶答案詳解
- 2025租賃場地合同協議
- 2024年09月河北唐山市中醫醫院招聘工作人員126名筆試歷年專業考點(難、易錯點)附帶答案詳解
- 2024年09月廣西壯族自治區衛生健康人才與技術服務中心(廣西壯族自治區醫學考試中心)招聘1人筆試歷年專業考點(難、易錯點)附帶答案詳解
- 竹材采運設備維護與管理考核試卷
- 2024年09月四川成都市郫都區三道堰鎮衛生院招聘編外人員1人筆試歷年專業考點(難、易錯點)附帶答案詳解
- 2024年09月四川內江市威遠縣人民醫院招聘10人筆試歷年專業考點(難、易錯點)附帶答案詳解
- 2024年09月內蒙古興安盟衛生健康系統事業單位招聘調整崗位筆試歷年專業考點(難、易錯點)附帶答案詳解
- 2025家具供應合同模板
- 光伏工程綠色施工、節能減排方案
- GB/T 18711-2002選煤用磁鐵礦粉試驗方法
- 小學生防溺水安全教育主題班會PPT
- 5030i儀器原理、維護與操作
- 配電屏柜安裝工藝
- 半導體器件物理 課件
- 超星爾雅學習通《中國古典小說巔峰四大名著鑒賞(中國紅樓夢學會)》章節測試含答案
- MBR膜離線清洗方案
- 音樂課件《快樂的節日》(動畫音頻都能播放)
- DB37-T 3913-2020 拼裝式游泳池驗收規范-(高清版)
- 學眾-福建省中職《計算機網絡技術》學業水平考試綜合模擬測驗(一)卷II
評論
0/150
提交評論