mysql 鎖原理與概念

1樂觀鎖

實現的機制

  • 一般會在數據庫中加一個字段一般叫(version)

實現原理

  • 取出記錄時,獲取當前version
  • 更新時,帶上這個version
  • 執行更新時, set version = newVersion where version = oldVersion
  • 如果version不對,就更新失敗

2悲觀鎖

3事務

3.1原子性

**原理: **

  • 當我們開啓了事務,將數據全部寫到日誌中
  • 利用了滾回日誌(undo)
  • 如果出現異常,根據日誌中的記錄回滾

保證事務的原子性

3.2持久性

作用: 容災備份

原理:

  • 有一個緩衝池,異步線程統統不數據到硬盤中
  • 保存在redo日誌文件之中,保證數據的不容易對丟失

3.3隔離性

作用:解決高併發問題,會有以下問題

  1. 髒讀
  2. 幻讀
  3. 不可重複讀
  4. 更新數據丟失問題

隔離級別:實現原理

通過對鎖的組合實現併發控制

分類:

  • 共享鎖(讀鎖)

多個請求可以同時共享一把鎖,提高高併發效率

  • 排它鎖(寫鎖)(Sql語句: for update)

排斥其他請求,等待寫入完成,才釋放

  • MVCC 多版本併發控制(樂觀鎖原理)

會創建兩個隱藏的列,用來做版本控制,版本不一樣就拒絕寫入

3.4一致性

  • 事務完成時,數據必須處於一致狀態,數據的完整性約束沒有被破壞,事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒 有執行過一樣。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章