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