- 悲觀縮:顧名思義比較擔心害怕,還沒開始就怕出現並發,所以在處理sql之前就將表或具體數據給上鎖。
- 使用for update測試
- 表數據
表結構
測試
- 1)sql:
set autocommit=0;
BEGIN;
SELECT * FROM `user` WHERE `name`='zhangsan' for UPDATE;
-- COMMIT; - 1-1)結果
查詢不受影響,整表都被鎖住
- 2)sql:
- 2-1)結果
- 條件為主鍵時條件行被鎖,查詢不受影響
-
總結:
當for update的條件字段為索引或者主鍵的時候,只會鎖住索引或者主鍵對應的行。
而當for update的字段為普通字段的時候,Innodb會鎖住整張表。
-
查詢不受影響
