mysql - Mysql 上 innodb_lock_wait_timeout 的高值

标签 mysql configuration

我们正在尝试获取有关 MySQL 上大型日志表的一些统计信息。某些选择查询的完成时间太长,导致出现异常;
引起:java.sql.SQLException:超过锁定等待超时;尝试重启交易
这导致我们的整个应用程序停止服务并出现相同的错误。经过一番研究,我们决定更改 MySQL 服务器配置的“innodb_lock_wait_timeout”变量。

但是,这种配置更改的缺点是什么?

最佳答案

我不确定这是否适用于您的问题,但您的问题是我刚才处理过的问题。我发现在我的系统上不需要锁,并且与 CREATE TABLE AS SELECT * FROM table_x... 这样的查询相关,这显然锁定了 table_x 中的所有记录,即使在 InooDB 中也是如此。

解决方案是将全局参数 innodb_locks_unsafe_for_binlog 设置为 true(在 my.cnf 中添加行 innodb_locks_unsafe_for_binlog=1)。这改变了 InnoDB 锁定记录的方式。

Here是关于它的一些文档。它确实使我的应用程序免于那些意外的锁定。

关于mysql - Mysql 上 innodb_lock_wait_timeout 的高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748527/

相关文章:

php - 当 MYSQL 列值递增 100 时做些什么

android - 使用具有多个相同资源的共享首选项造成困惑

c# - 如何将参数传递给 TeamCity Test Runner?

java - 即使一切正常,也无法解决符号错误(IntelliJ IDEA)

java - 如何从字符串中提取变量

php - 如果输入图像为空给我错误

php - Azure网站+mysql

php - 如何使递归 TreeView 可折叠

maven-jaxb2-plugin forceRegenerate=false 不起作用?

regex - 不忽略请求参数的 nginx 规则