MySQL & # 39;锁# 39;复制TMP表时的进程


MySQL 'locked' processes when copying tmp table

我有一个查询,需要很长时间运行,但最终产生一个新表。实际的连接并不是那么慢,但它几乎把所有的时间都花在"复制到tmp表"上,在此期间,所有其他查询(应该去不相关的表)的状态都是"锁定"的。我正在优化长查询的过程中,但它需要一段时间是可以的,因为它是一个离线过程,但它不能停止所有其他查询,无论如何都不应该与它相关。有人知道为什么所有其他不相关的查询会返回为"锁定",以及如何防止这种行为吗?

你是对的,"不相关的表"不应该受到影响。他们不应该这么做,据我所知他们也不是。

MySQL中有很多关于锁、存储引擎和处理方法的信息。

为了限制锁,我建议您编写一个应用程序来读取创建这个新表所需的所有数据,并简单地让应用程序将值插入到新表中。这可能需要更长的时间,但它将在更小的块中执行,并且具有更少或没有锁。

祝你好运!

MySQL版本是什么?

你使用MyISAM吗?MyISAM对于大型SELECT命令有很大的LOCK问题。

您有专用服务器吗?内存表的最大大小是多少(查看my.cnf)?