1.事務的四個特點,原子性,一致性,隔離性,持久性。2.併發的危險丟失更新:兩個進程讀取同一個數據然後試圖更新會丟失一個進程的更新;臟讀:當一個進程讀取了另一個沒提交進程修改的數據時,如果另一個進程會滾第一個進程就是臟讀;不可重覆讀:在一個事務內不能保證兩次讀取一個數據的結果是一樣的就是不可重覆讀; ...
1.事務的四個特點,原子性,一致性,隔離性,持久性。
2.併發的危險
丟失更新:兩個進程讀取同一個數據然後試圖更新會丟失一個進程的更新;
臟讀:當一個進程讀取了另一個沒提交進程修改的數據時,如果另一個進程會滾第一個進程就是臟讀;
不可重覆讀:在一個事務內不能保證兩次讀取一個數據的結果是一樣的就是不可重覆讀;
幻影讀:一個事務對一個範圍的數據插入或刪除了行,而這個範圍的數據正被另一個事務讀取就是幻影讀;
重覆讀:一個事務對錶進行掃描時另一個事務進行了數據移動或插入會造成重覆讀。
3.鎖:被用來組織多種類型的訪問,鎖是針對其他類型鎖的阻塞。
4.鎖的分層,在用更少數量的鎖鎖定更多數量的數據和用更多數量的鎖鎖定更少數量的數據必須做個權衡。
5.共用鎖S,
更新鎖U,更新鎖必須轉換為拍他鎖,等到最後一個共用所釋放後就能轉換為拍他鎖了;
排他鎖X,一直持有到事務結束。
意向鎖IS,IU,IX,為了在鎖層次較高的層級表示意向,用於優化鎖的檢查。
轉換鎖SIX,SIU,UIX,事務從粗級別的鎖轉換為細級別的鎖時會建立。
6鎖升級:當一個表的行或頁面上的鎖超過5000個時就會觸發鎖升級,直接升級到表鎖或分區鎖,並刪除之前的行鎖。
7.死鎖:資料庫引擎會把死鎖的一個事務回滾並拋錯1205,可檢測錯誤號並嘗試重試。
解決方向,要麼儘快釋放事務占用資源,要麼增加鎖定資源,讓其他事務沒有重疊的可能。
8.隔離級別
可序列化,鎖定一切。
可重覆讀,會發生幻影讀。
已提交讀(預設),會出現幻影讀,重覆讀,不可重覆讀的事務問題
未提交讀,可出現除上述問題外還有臟讀。
快照,樂觀鎖,需要設置資料庫,特點不需要鎖。
之前的摘要在小組:https://group.cnblogs.com/176751/