1. 程式人生 > >資料庫系統概論06-查詢處理&連線處理&事務&活鎖&死鎖&兩段鎖協議

資料庫系統概論06-查詢處理&連線處理&事務&活鎖&死鎖&兩段鎖協議

查詢處理

分成4個階段:查詢分析、查詢檢查、查詢優化、查詢執行

全表掃描演算法

索引掃描演算法(B+樹索引或hash索引):效率高

連線處理

巢狀迴圈演算法:按照資料塊讀入記憶體,分外層迴圈(表1),內層迴圈(表2)對比

排序-合併演算法:按連線相同屬性先排序表一,取第一個掃描表2連線

索引連線演算法:建立索引,查詢相應的元組

hash join演算法:把連線屬性作為hash碼,劃分階段(建立階段:建立hash表)、試探階段(連線階段)

 

事務

使用者定義的一個數據庫操作序列。要麼全做,要麼都不做。

之前寫過關於事務的知識點,請點選此處

BEGIN TRANSACTION;

COMMIT;

ROLLBACK;

 

活鎖

T1封鎖資料R,事務T2請求封鎖R,T2等待,T3請求封鎖R,T1釋放R封鎖之後批准T3請求,T2仍然等待....

T2永遠等待,這就是活鎖。

解決方法:先來先服務

死鎖

T1等待T2,T2等待T1,就是死鎖

解決方法:

(1)預防死鎖:一次封鎖法、順序封鎖法

(2)允許死鎖的發生,採取一定的手段定期診斷系統中有無死鎖,有就解除。超時法、等待圖法

 

兩段鎖協議

保證排程的可序列化,

事務分兩個階段:第一階段是獲得封鎖(擴充套件階段)、第二階段是釋放封鎖(收縮階段)

封鎖粒度:封鎖物件的大小