mysql使用for update實現悲觀鎖


  • 悲觀縮:顧名思義比較擔心害怕,還沒開始就怕出現並發,所以在處理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會鎖住整張表。

    查詢不受影響


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM