12.22 關係數據庫原理及MySQL實現



事務

概念

一組原子性的SQL查詢

特性

ACID

A:原子性,automicity,事務是不可分割的最小單元,事務提交時查詢語句要麼全部執行,要麼全部回滾C:一致性,consistency,從一個一致性狀態轉變成另一個一致性狀態,不會導致數據丟失,如:轉賬不會導致錢憑空消失I:隔離性,isolation,一個事物所做的修改在提交前,對其他事務是不可見的D:持久性,durability,一旦事務提交,所做的修改就會永久保存到數據庫中

讀取問題

髒讀:可以讀取到其他事物未提交修改不可重複讀:同一事務中多次讀取相同的記錄可能結果不同幻讀:同一事務多次中讀取範圍內記錄可能結果不同

事務隔離級別

未提交讀:read uncommitted,存在髒讀、不可重複讀、幻讀提交讀:read committed,解決髒讀,存在不可重複讀,幻讀可重複讀:repeatable read,解決髒讀、不可重複讀,存在幻讀可串行化:serializable,解決髒讀、不可重複讀、幻讀

樂觀鎖和悲觀鎖

樂觀鎖:通過自旋來重試,多版本併發控制

悲觀鎖:通過鎖定資源

MySQL實現

存儲引擎

InnoDNMyISAMMemory...

InnoDB

默認隔離級別

repeatable read,如何解決幻讀?通過多版本併發控制來解決幻讀。

特性

事務、備份、崩潰恢復支持行級鎖支持B-Tree、Full-text等索引不支持Hash索引

MyISAM

特性

不支持事務支持表級鎖支持B-Tree、Full-text等索引不支持Hash索引

參考

MySQL索引原理以及查詢優化 https://www.cnblogs.com/bypp/p/7755307.html