MySQL中select for update的問題

因爲InnoDB引擎預設的是Row-Level Lock,因此只有明確的主鍵,MySQL纔會執行行鎖.不然MySQL將會執行表鎖.spa

 

實驗以下:事務

1.當咱們使用主鍵做爲查詢查詢條件,並使用for update加鎖的時候,咱們只是對這條記錄加鎖:it

終端1: id=1的記錄已經被加鎖,在事務提交以前,終端2沒法讀取到這條記錄.date

終端2:如今沒法讀取id=2的記錄,可是能夠讀取主鍵爲其餘值的記錄. 終端

終端1的事務提交(commit)以後,終端2的事務才能夠查詢到id=1的記錄 im

2.當咱們不使用主鍵做爲查詢條件並for update,會觸發表鎖.查詢

終端1:使用非主鍵做爲關鍵字做爲檢索條件終端2:在事務提交以前,終端2沒法以各類條件查詢,由於終端1事務已經觸發了表鎖. img

終端2:在事務提交以前,終端2沒法以各類條件查詢,由於終端1事務已經觸發了表鎖.co

相關文章
相關標籤/搜索