首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何诊断挂起的MySQL更新?

问如何诊断挂起的MySQL更新?
EN

Database Administration用户
提问于 2017-05-31 17:55:46
回答 3查看 576关注 0票数 3

我有一个简单的UPDATE语句,运行在一个MySQL 5.6.34数据库上,这个数据库似乎是挂起的。该语句仅用时间戳更新单个行,如下所示:

代码语言:javascript
复制
UPDATE mytable SET last_updated='2017-05-31 02:13:43' WHERE id=123;

然而,一个小时后,它仍在运行。

运行SHOW FULL PROCESSLIST;不会显示任何其他进程访问表,所以我不认为这是死锁。我试着杀人并重新运行这个过程,但它仍然挂着。

还有什么其他原因会导致这样一个简单的UPDATE语句挂起?我怎么诊断这个?

EN

回答 3

Database Administration用户

发布于 2017-05-31 18:31:40

只需在slow_query_log = 1 (如果>=5.6.1)或log_slow_queries = 1(如果<5.6.1)以及my.cnf中的slow_query_log_file = /path/to/logfile和long_query_time = 0中设置,然后重新启动mysql并查看日志文件。我不会在生产env上继续使用它,这样的日志记录是一个性能杀手,如果您负载很重,可能会导致一些不好的事情。它也可能很快变得非常大,因为long_query_time 0会记录所有内容,所以"/path/to“应该有足够的空闲空间。

票数 0
EN

Database Administration用户

发布于 2017-06-01 14:43:03

这个问题迫使我重新启动服务器,从而纠正了问题。

票数 0
EN

Database Administration用户

发布于 2022-04-24 22:28:50

如果它是一个InnoDB表,show engine innodb status应该给出它是否在等待锁的指示。

它仍然在运行的一个原因是一个相当大的表,而且id不是表中的主键或辅助键。

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

https://dba.stackexchange.com/questions/175430

复制
相关文章

相似问题

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