【MySQL】innodb行鎖變表鎖
關于下文中的表格看法,按照時間軸排列的
InnoDB 行級鎖是通過給索引上的索引項加鎖來實現的,InnoDB行級鎖只有通過索引條件檢索數據,才使用行級鎖;否則,InnoDB使用表鎖
在不通過索引(主鍵)條件查詢的時候,InnoDB是表鎖而不是行鎖。
創建表
創建一個沒有主鍵的表
CREATE TABLE `test_no_key` ( `f1` int(11) NOT NULL , `f2` varchar(11) DEFAULT NULL ) ENGINE=InnoDB
1
2
3
4
5
插入倆條數據
insert into from test_no_key (f1,f2) values (1,2); insert into test_no_key (f1,f2) values (2,2);
1
2
3
4
開啟倆個進程
案例1
就是在沒有使用索引的情況下InnoDB就會使用表級鎖(共享鎖不會有這個情況)
案例2
給表加上主鍵
這個測試可以看到,當有主鍵時,是行鎖,只會對一條數據進行加鎖
案例3
如果查詢的條件沒有帶索引,那么行鎖則會轉為表鎖即時表中字段有主鍵;所以在查詢的時候建議使用索引字段查詢
查看表數據
Mysql 任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。