1. 程式人生 > >mysql 查詢鎖表

mysql 查詢鎖表

時間 name log 了吧 不能 tro ble code 邏輯

1)使用情景“判斷通過後寫入數據庫”,這個一般是不會有問題的, 但並發訪問的時候就不太好搞。因為寫入(insert)是需要時間的,假設現在有兩個並發請求,(假設第一個訪問是最後一個符合條件的寫入請求,按照邏輯,第二個請求應該是不合法、不能寫入的),在第一請求成功寫入之前,第二請求查詢到未更新的數據記錄,因為記錄是未更新的,所以它也是可以通過判斷的。最後導致兩個請求都寫入數據了。

2)解決辦法:查詢鎖表

在我處理完入庫前,查都不讓你查了,這樣就不會判斷錯誤了吧

3)鎖表語句

LOCK TABLES tbl_name WRITE;

註意這裏是用的 WRITE!!

解鎖:

UNLOCK TABLES;

註意:是要查詢之前鎖表(select 之前),鎖表之後,本進程是可以繼續查詢的,只是鎖了其他進程的查詢

mysql 查詢鎖表