首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql上innodb_lock_wait_timeout的高值

问Mysql上innodb_lock_wait_timeout的高值
EN

Stack Overflow用户
提问于 2011-01-20 14:49:29
回答 2查看 14.6K关注 0票数 5

我们试图从MySQL上的大型日志表中获得一些统计数据。有些select查询要花很长时间才能完成,并导致异常;

由: java.sql.SQLException:锁定等待超时超出;尝试重新启动事务

这导致我们的整个应用程序停止使用相同的错误。经过一些研究,我们决定更改我们的innodb_lock_wait_timeout服务器配置的‘MySQL’变量。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-27 15:53:49

随着负载的增加,您将需要更长的超时时间。缺点是其他客户端查询的最大查询时间可能会不断增加。您需要了解这一点,我建议使用linux工具mytop查找长期运行的查询,然后对它们进行解释,查看锁是如何使用的。调整数据和/或查询以减少锁定。

最后,MariaDB (MySQL的一个分支)非常关注于减少操作所需的锁数量,因此转向这一点也可能对您有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2011-02-27 17:29:51

我不知道这是否适用于你的问题,但你的问题是我刚才已经处理过的问题。我发现,在我的系统中,这些锁是不需要的,并且与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锁定记录的方式。

这里是关于它的一些文档。它真的把我的应用程序从那些意想不到的锁中救了出来。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4748527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档