【转】MySQL中select * for update锁表的问题
生活随笔
收集整理的這篇文章主要介紹了
【转】MySQL中select * for update锁表的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MySQL中select * for update鎖表的問題
由于InnoDB預設是Row-Level Lock,所以只有「明確」的指定主鍵,MySQL才會執行Row lock (只鎖住被選取的資料例) ,否則MySQL將會執行Table Lock (將整個資料表單給鎖住)。
舉個例子:
假設有個表單products ,里面有id跟name二個欄位,id是主鍵。
例1: (明確指定主鍵,并且有此筆資料,row lock)
SELECT * FROM products WHERE id='3' FOR UPDATE;
SELECT * FROM products WHERE id='3' and type=1 FOR UPDATE;
例2: (明確指定主鍵,若查無此筆資料,無lock)
SELECT * FROM products WHERE id='-1' FOR UPDATE;
例2: (無主鍵,table lock)
SELECT * FROM products WHERE name='Mouse' FOR UPDATE;
例3: (主鍵不明確,table lock)
總結
以上是生活随笔為你收集整理的【转】MySQL中select * for update锁表的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多人被它叮咬死亡:小小的蜱虫 为什么这么
- 下一篇: SharePoint学习札记[6] —