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


關係數據庫原理及MySQL實現


事務

概念

一組原子性的SQL查詢

特性

ACID

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

讀取問題

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

事務隔離級別

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

樂觀鎖和悲觀鎖

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

悲觀鎖:通過鎖定資源

關係數據庫原理及MySQL實現

MySQL實現

存儲引擎

  • InnoDN
  • MyISAM
  • Memory
  • ...

InnoDB

默認隔離級別

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

特性

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

MyISAM

特性

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

參考

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


分享到:


相關文章: