MySQL中的日志终止查询
我在应用程序中遇到了一些奇怪的bug,或者是MySQL版本?这会导致查询永远保持锁定状态,填满最大线程数 我读过关于设置wait_timeout变量以在一段时间后杀死伪线程的内容。这工作正常,但我想记录被终止的查询,以便进一步检查/确保备份脚本没有被终止 有没有可能这样做MySQL中的日志终止查询,mysql,Mysql,我在应用程序中遇到了一些奇怪的bug,或者是MySQL版本?这会导致查询永远保持锁定状态,填满最大线程数 我读过关于设置wait_timeout变量以在一段时间后杀死伪线程的内容。这工作正常,但我想记录被终止的查询,以便进一步检查/确保备份脚本没有被终止 有没有可能这样做 谢谢。您可能可以使用,但我不确定问题是否在于它们从未完成。值得一试 此外,在有死线的情况下,通过运行SHOW FULL PROCESSLIST,您可能可以看到发生了什么。它应该向您显示问题是什么以及查询是什么 如果您可以在开发
谢谢。您可能可以使用,但我不确定问题是否在于它们从未完成。值得一试 此外,在有死线的情况下,通过运行SHOW FULL PROCESSLIST,您可能可以看到发生了什么。它应该向您显示问题是什么以及查询是什么
如果您可以在开发环境中模拟这种情况,还可以打开常规查询日志记录,记录每条语句,然后在日志崩溃后跟踪日志。过去,我为每个查询类型标记了唯一的注释:
/* Query_12345 */ SELECT ... FROM ... WHERE ... LIMIT ...
后台进程将轮询显示完整的PROCESSLIST,并查找长度超过X秒且带有Query_NNNNN标记的任何查询
最后,如果他们坚持得太久,他们就会丧命。这让服务器可以呼吸,而我们知道如何优化8000000记录表,这会减慢速度 等待超时似乎不会在指定时间后终止查询。。。我创建了一个cron作业,它运行showfullprocesslist并查找运行时间超过n秒的查询。然后我用kill id终止这些查询,并通过电子邮件发送给自己。