mysql事務與鎖

1、事務的四大特性ACID

  原子性、一致性、隔離性、持久性mysql

2、事務的隔離級別

  事務隔離級別是用來解決事務併發的三大問題,即髒讀、幻讀、不可重複讀,其中幻讀與不可重複讀的區別在於,幻讀的重點是新增或刪除數據,不可重複讀的重點是修改算法

事務的四種隔離級別

未提交讀sql

未解決任何併發問題
已提交讀 解決髒讀問題
可重複讀 解決不可重複讀問題(InnoDB引擎下也可解決幻讀問題)
串性化 解決全部問題

 

 

 

 

 

 

 

3、事務隔離級別解決方案

  一種是加鎖(LBCC),也就是在讀取數據前,對記錄加鎖,另一種則是生成快照(MVCC)併發

 

4、mysql中鎖的類型

  一、按鎖的粒度分爲:表鎖和行鎖

    

  二、按鎖的基本模式分爲:【共享鎖(讀鎖)、排他鎖(寫鎖)】行鎖 和【意向共享鎖、意向排他鎖】表鎖 

    意向鎖的做用,實現多中鎖粒度的並存以及提高加鎖的效率spa

  三、按鎖的算法分爲:記錄鎖、間隙鎖及臨建鎖(InnoDB中默認的行鎖算法)

    

    

    鎖住下一區間的緣由是:避免出現幻讀的狀況blog

    

 

 

5、鎖的原理

  mysql的行鎖是經過鎖住【索引】項來實現,當沒有索引(默認的彙集索引)或者沒有命中索引的時候,會進行鎖表操做;如鎖住惟一索引,那麼主鍵索引也會被鎖住,這與索引的存儲結果有關。ps:後續補充

索引

6、查看鎖的狀態

  表級鎖的爭用狀態:show status like 'table%'事務

  行級鎖的爭用狀態:show status like 'innodb_row_lock%'ci

相關文章
相關標籤/搜索