mysql 外來鍵鎖機制

2021-09-12 04:24:17 字數 992 閱讀 3639

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

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

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

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

[size=large][color=red]一、對父表的操作[/color][/size]

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

[color=blue]child會鎖外鍵值為***的行,不會鎖其他行[/color]

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

[color=blue]child會鎖外鍵值為***,yyy的行,不會鎖其他行[/color]

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

[color=blue]child會鎖外鍵值為***,不會鎖其他行[/color]

[size=large][color=red]二、對子表的操作[/color][/size]

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

[color=blue]test_tab會鎖值***的行,不會鎖其他行[/color]

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

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

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

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

mysql 外來鍵鎖機制

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

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...