innodb_lock_wait_timeout 增加超时

innodb_lock_wait_timeout increase timeout

我正在使用 MySQL 数据库并试图在插入后立即更新记录,所以我收到以下错误 ER_LOCK_WAIT_TIMEOUT: Lock wait timeout exceeded; try restarting transaction。 所以我通过以下查询减少超时:-

set GLOBAL innodb_lock_wait_timeout=1

所以我的问题是:- 可以这样做吗?会不会导致性能问题等其他问题?

感谢您的帮助。

如果这是一个 Web 应用程序,并且您正试图从一页到下一页挂起事务,不要;它不会工作。

"just after" 是什么意思?如果您在两个语句之间什么都不做,即使是 1 秒的超时也应该足够大。

mysql> SET GLOBAL innodb_lock_wait_timeout = 1;
mysql> SELECT @@innodb_lock_wait_timeout;
+----------------------------+
| @@innodb_lock_wait_timeout |
+----------------------------+
|                         50 |
+----------------------------+
mysql> SET SESSION innodb_lock_wait_timeout = 1;
mysql> SELECT @@innodb_lock_wait_timeout;
+----------------------------+
| @@innodb_lock_wait_timeout |
+----------------------------+
|                          1 |
+----------------------------+

解释变量的 GLOBAL 与 SESSION:GLOBAL 值用于在连接开始时初始化 SESSION 值。之后,您可以更改 SESSION 值以影响您正在做的事情。更改 GLOBAL 值对您的 current 连接没有影响。

将超时更改为 1 是非常安全的(一旦您了解了 GLOBAL 与 SESSION)。唯一会改变的是出现该错误的频率。