mysql 外來鍵鎖機制

2021-07-30 09:21:43 字數 798 閱讀 2836

在mysql的多個儲存引擎中,innodb支援外來鍵,但是由於外來鍵,也會對innodb表增加鎖定機制;

所有的外來鍵相關的操作都在資料更改時,比如檢查資料完整性、增加鎖定等;

假設乙個表為test_tab,乙個表為child,test_tab通過id和child的test_tab_id相連線;在乙個session中set autocommit=0,執行對test_tab或child的操作,在另乙個

session執行對child或test_tab的操作,從而得出以下結論:

一、對父表的操作

1:insert to test_tab,新插入行的id值為***

child會鎖外鍵值為***的行,不會鎖其他行

2:update test_tab,原id為***,現id為yyy

child會鎖外鍵值為***,yyy的行,不會鎖其他行

3:delete from test_tab,刪除行的id為***

child會鎖外鍵值為***,不會鎖其他行

二、對子表的操作

1:insert to child,插入行的外鍵值為***

test_tab會鎖值***的行,不會鎖其他行

2:update child,更新行的外鍵值原為***,現為yyy

test_tab會鎖***,yyy行,但要注意:存在間隔鎖,也會鎖其他行(***,yyy之間的位置)

3:delete from child,刪除行的外鍵值為***

test_tab會鎖***的行,但要注意:存在間隔鎖,也會鎖其他行(***-1的位置)

mysql 外來鍵鎖機制

size large color red 在mysql的多個儲存引擎中,innodb支援外來鍵,但是由於外來鍵,也會對innodb表增加鎖定機制 color size color blue 所有的外來鍵相關的操作都在資料更改時,比如檢查資料完整性 增加鎖定等 color 假設乙個表為test tab...

mysql鎖機制 mysql 鎖機制

一 概述 mysql有三種鎖的級別 頁級 表級 行級。myisam和memory儲存引擎採用的是表級鎖 table level locking bdb儲存引擎採用的是頁面鎖 page level locking 但也支援表級鎖 innodb儲存引擎既支援行級鎖 row level locking 也...

mysql 外來鍵 del 記錄 MySQL 外來鍵

在mysql中 1 mysql 資料表主要支援六種型別 分別是 bdb heap isam merge myisam innobdb。這六種又分為兩類,一類是 事務安全型 transaction safe 包括bdb和innodb 其餘都屬於第二類,稱為 非事務安全型 non transaction...