易學筆記-系統分析師考試-第5章 資料庫系統/5.4 資料庫控制功能/5.4.1併發控制
阿新 • • 發佈:2018-11-24
- 併發控制
- 概念:多個事務對同一個資料來源的操作稱為併發
- 事務
- 概念:是DBMS執行的最基本工作單位,使用者定義的一個數據庫操作序列,這些操作序列要麼不做,要麼全部做
- 特徵(ACID)
- 原子性:保證事務包含的一組資料庫操作是不可分割的
- 一致性:保證資料庫從一個狀態到另外一個狀態的變化
- 隔離性:一個事務的執行不能被另外一個事務干擾,要求多個事務併發進行
- 永續性:事務一旦提交,那麼改變將是永久的
- 事務不一致的問題
- 修改丟失
- 概念:事務A與事務B修改同一個資料,事務B的提交破壞了事務A提交的結果
- 舉例:
- 讀“髒資料”
- 概念:事務A修改某一個數據並提交,事務B讀取A提交的資料,由於某種原因A事務被撤銷,A原來修改的值恢復到原值,但是B讀到的值還是A修改後的值
- 舉例:
- 不可重複讀
- 概念:指的是事務A讀取資料後,事務B執行了更新操作,但是事務A使用的值還是原來的值,操作資料的不一致
- 舉例
- 修改丟失
- 封鎖協議
- 封鎖類別
- X封鎖(排他型封鎖 )
- 事務T對資料物件A進行了X封鎖,那麼其它事務就不能對資料A進行讀取和修改資料,要等事務T解鎖之後才能對A進行操作
- S封鎖
- 事務T對資料物件A進行了S封鎖,那麼允許事務T讀取資料A的值,但是不允許事務T修改資料A的值,要等事務T解鎖之後才能對A進行操作
- 在S封鎖解鎖前,不能對資料A進行X封鎖
- X封鎖(排他型封鎖 )
- 封鎖協議
- 一級封鎖協議
- 概念:事物T在對A修改之前進行X封鎖,直到事物結束才釋放
- 優點:可以防止修改丟失,保證事務T可恢復
- 缺點:不能保證可重複讀和讀“髒資料”
- 二級封鎖協議
- 概念:在一級封鎖基礎上,事物T在對A讀之前進行S封鎖,讀完後釋放S鎖
- 優點:可以防止修改丟失,防止讀髒資料
- 缺點:不能保證可重複讀
- 三級封鎖協議
- 概念:在一級封鎖基礎上,事物T在對A讀之前進行S封鎖,直到事務結束才釋放
- 優點:可以防止修改丟失,防止讀髒資料、保證重複讀
- 兩段鎖協議
- 擴充套件階段
- 任何時候對資料進行讀、寫之前先進行加鎖操作
- 收縮階段
- 一旦釋放了一個封鎖,那就不能再獲取任何封鎖
- 優點:對事務的任何併發排程策略都是可序列的
- 缺點:可能引起死鎖
- 擴充套件階段
- 封鎖粒度
- 概念:指的是封鎖物件的大小
- 封鎖粒度包括:
- 屬性值
- 屬性值集
- 元組
- 關係
- 索引
- 整個資料庫
- 物理頁
- 評價:
- 封鎖粒度過小,併發性高,但是開銷大;
- 封鎖粒度大,併發性小,但開銷小
- 一級封鎖協議
- 封鎖類別
- 死鎖問題
- 概念:指的是某一個事務T對A申請封鎖後,但又需要等待同樣需要資料A的其它事務解鎖,這樣引起的無休止的等待稱為死鎖
- 資料庫的死鎖類似於作業系統的死鎖
- 效能優化
- 資料庫完整性
- 資料庫安全性
- 資料庫備份和恢復