我有一个查询,它需要很长时间才能运行,但最终会生成一个新表。实际的连接并不都那么慢,但它几乎所有的时间都花在“复制到临时表”上,在这段时间内,所有其他查询(应该是去往不相关的表)的状态都是“锁定”的。我正在优化长查询的过程中,但它可以花一段时间,因为它是一个离线过程,但它不是可以停止所有其他查询,无论如何都不应该与它相关。有没有人知道为什么所有其他不相关的查询都会以“锁定”的形式返回,以及如何防止这种行为?
发布于 2011-11-22 05:20:54
你说的对,“不相关的表”不应该受到影响。他们不应该,据我所知,他们不应该。
在MySQL上有很多关于锁、存储引擎和处理它的方法的信息。
为了限制锁,我建议您编写一个应用程序来读取执行此新表所需的所有数据,并简单地让您的应用程序将值插入到新表中。这可能需要更长的时间,但它将在较小的块中完成,并且具有较少的锁或没有锁。
祝好运!
发布于 2011-11-22 05:13:26
您的MySQL版本是什么?
你使用MyISAM吗?MyISAM在大型SELECT命令上有一个很大的锁问题。
你有专用的服务器吗?内存中表的最大大小是多少(请查看my.cnf)?
https://stackoverflow.com/questions/8218548
复制相似问题