數據庫四種事務隔離級別


面試白話文,事務隔離級別

事務具有原子性、一致性、隔離型、持久性。

使用Mysql數據庫說明事務隔離級別:

  mysql支持事務的常用引擎是InnoDB

  mysql默認事務隔離級別可重復讀(REPEATABLE-READ):使用show variables like 'tx_isolation' 查看

  注:以下第二個事務,處於開啟,未提交狀態。

  第一種:讀未提交(read uncommitted)

      第一個事務未提交更新的數據,第二個事務可以讀到,這是讀未提交。

      第一個事務未提交更新的數據回滾,第二個事務讀到回滾的數據,這是臟讀。

      故讀未提交,可能會出現臟讀。

  

  第二種:讀已提交(read committed),也稱不可重復讀

      第一個事務未提交更新的數據,第二個事務讀不到;

      第一個事務提交更新的數據,第二個事務可以讀到;這是讀已提交。

      第一個事務提交更新小明同學年齡12歲,第二個事務讀到小明12歲;

      第三個事務再次提交更新小明同學年齡14歲,第二個事務再讀到小明14歲;這是不可重復讀(同一個事務內讀取的數據結果不一致)。

      故讀已提交,會出現不可重復讀(同一個事務內讀取的數據結果不一致),不可重復讀也會造成幻讀(同一個事務內讀取的數據結果不一致)。

 

  第三種:可重復讀(repeatable read),mysql默認事務隔離級別

      第一個事務提交更新小明同學年齡12歲,第二個事務讀到小明12歲;

      第三個事務再次提交更新小明同學年齡14歲,第二個事務再讀到小明12歲;這是可重復讀(同一個事務內讀取的數據結果一致)。

      第四個事務提交插入同學小馬數據記錄,第二個事務再讀不僅讀到小明12歲數據,還會讀到小馬同學數據,這是幻讀。

      故可重復讀,會出現幻讀(同一個事務內讀取的數據結果不一致)。

 

  第四種:串行化(serializable)

      隔離級別最高,解決了臟讀、不可重復無、幻讀問題。

      同一個事務內,不管讀取多少次,結果集永遠一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM