日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MySQL高级 - 锁 - InnoDB行锁 - 介绍及背景知识

發布時間:2024/4/14 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL高级 - 锁 - InnoDB行锁 - 介绍及背景知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

行鎖介紹

?

行鎖特點 :偏向InnoDB 存儲引擎,開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度也最高。

InnoDB 與 MyISAM 的最大不同有兩點:一是支持事務;二是 采用了行級鎖。

背景知識

事務及其ACID屬性

事務是由一組SQL語句組成的邏輯處理單元。

事務具有以下4個特性,簡稱為事務ACID屬性。

ACID屬性含義
原子性(Atomicity)事務是一個原子操作單元,其對數據的修改,要么全部成功,要么全部失敗。
一致性(Consistent)在事務開始和完成時,數據都必須保持一致狀態。
隔離性(Isolation)數據庫系統提供一定的隔離機制,保證事務在不受外部并發操作影響的 “獨立” 環境下運行。
持久性(Durable)事務完成之后,對于數據的修改是永久的。

并發事務處理帶來的問題

問題含義
丟失更新(Lost Update)當兩個或多個事務選擇同一行,最初的事務修改的值,會被后面的事務修改的值覆蓋。
臟讀(Dirty Reads)當一個事務正在訪問數據,并且對數據進行了修改,而這種修改還沒有提交到數據庫中,這時,另外一個事務也訪問這個數據,然后使用了這個數據。
不可重復讀(Non-Repeatable Reads)一個事務在讀取某些數據后的某個時間,再次讀取以前讀過的數據,卻發現和以前讀出的數據不一致。
幻讀(Phantom Reads)一個事務按照相同的查詢條件重新讀取以前查詢過的數據,卻發現其他事務插入了滿足其查詢條件的新數據。

事務隔離級別

為了解決上述提到的事務并發問題,數據庫提供一定的事務隔離機制來解決這個問題。數據庫的事務隔離越嚴格,并發副作用越小,但付出的代價也就越大,因為事務隔離實質上就是使用事務在一定程度上“串行化” 進行,這顯然與“并發” 是矛盾的。

數據庫的隔離級別有4個,由低到高依次為Read uncommitted、Read committed、Repeatable read、Serializable,這四個級別可以逐個解決臟寫、臟讀、不可重復讀、幻讀這幾類問題。

隔離級別丟失更新臟讀不可重復讀幻讀
Read uncommitted×
Read committed××
Repeatable read(默認)×××
Serializable××××

備注 : √ 代表可能出現 , × 代表不會出現 。

Mysql 的數據庫的默認隔離級別為 Repeatable read , 查看方式:

show variables like 'tx_isolation';

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的MySQL高级 - 锁 - InnoDB行锁 - 介绍及背景知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。