文章詳情頁
更新mysql中被別人鎖定的行, 能不能快速失敗直接報錯, 而不是一直等待
瀏覽:90日期:2022-06-14 14:42:55
問題描述
用戶1
begin;select * from table where id = 1 for update;
用戶2
update table set ... where id = 1;
用戶2就一直在等待, 能不能讓用戶2快速失敗, 直接報錯啊
問題解答
回答1:設置一個超時時間為10s修改my.cnf在[mysqld]下面加入:
innodb_lock_wait_timeout=10
則10s后收到如下錯誤:(mysql默認50s)
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction回答2:
select for update這種寫法會鎖表。把數據庫等待鎖的時間調整一下,可以讓用戶2快速失敗
回答3:用樂觀鎖??
排行榜
