面試題 InnoDB 行鎖

2022-04-02 00:24:06 字數 851 閱讀 4011

innodb 行鎖

行鎖介紹

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

innodb 與 myisam 的最大不同有兩點:一是支援事務;二是 採用了行級鎖。

innodb 的行鎖模式

innodb 實現了以下兩種型別的行鎖。

對於update、delete和insert語句,innodb會自動給涉及資料集加排他鎖(x);

對於普通select語句,innodb不會加任何鎖;

可以通過以下語句顯示給記錄集加共享鎖或排他鎖 。

共享鎖(s):select * from table_name where ... lock in share mode

排他鎖(x) :select * from table_name where ... for update

無索引行鎖公升級為表鎖

如果不通過索引條件檢索資料,那麼innodb將對錶中的所有記錄加鎖,實際效果跟表鎖一樣。

行級鎖定的優點:

1、當在許多執行緒中訪問不同的行時只存在少量鎖定衝突。

2、回滾時只有少量的更改

3、可以長時間鎖定單一的行。

行級鎖定的缺點:

比頁級或表級鎖定占用更多的記憶體。

當在表的大部分中使用時,比頁級或表級鎖定速度慢,因為你必須獲取更多的鎖。

如果你在大部分資料上經常進行group by操作或者必須經常掃瞄整個表,比其它鎖定明顯慢很多。

用高階別鎖定,通過支援不同的型別鎖定,你也可以很容易地調節應用程式,因為其鎖成本小於行級鎖定。

Innodb 行鎖與表鎖

行鎖與表鎖 innodb預設是行級別的鎖,當有明確指定的主鍵時候,是行級鎖。否則是表級別。for update的注意點 for update 僅適用於innodb,並且必須開啟事務,在begin與commit之間才生效。要測試for update的鎖表情況,可以利用mysql的command mod...

面試題 MySQL的innodb和myisam

1.簡介 索引是一種排好序的用於快速查詢的資料結構。根據官網手冊innodb支援b tree索引 聚簇索引 clustered indexes 全文索引 full text search indexes 不支援hash索引 innodb在內部利用雜湊索引來實現其自適應雜湊索引功能 不支援t tree...

面試題 innodb和myisam的區別

1 innodb支援事務,而myisam不支援事務。2 innodb支援外來鍵,而myisam不支援外來鍵。3 innodb是行鎖,而myisam是表鎖 每次更新增加刪除都會鎖住表 4 innodb和myisam的索引都是基於b 樹,但他們具體實現不一樣,innodb的b 樹的葉子節點是存放資料的,...