Mysql-5.7

MySQL 5.7 中的NOWAIT 等價物

  • December 18, 2020

MySQL 8.0 有一個新特性,允許事務在嘗試訪問被另一個事務鎖定的記錄而不是等待該事務送出或等待超時時拋出錯誤,從而立即超時。

有沒有辦法在 MySQL 5.7 中達到同樣的效果?

伺服器端 SELECT 語句超時允許:

SET SESSION MAX_EXECUTION_TIME=2000;

不完全一樣,但很接近。

MAX_EXECUTION_TIME 可用於 SELET 語句。我需要這個來處理 INSERT 語句:

SET SESSION INNODB_LOCK_WAIT_TIMEOUT = 2;

為了使它適用於單個 INSERT 語句,我這樣做了:

SET @saved_lock_wait = @@SESSION.INNODB_LOCK_WAIT_TIMEOUT;
SET SESSION INNODB_LOCK_WAIT_TIMEOUT = 2;
-- The query...
SET SESSION INNODB_LOCK_WAIT_TIMEOUT = @saved_lock_wait;

引用自:https://dba.stackexchange.com/questions/220866