Php MySQL';锁定';复制tmp表时的进程

Php MySQL';锁定';复制tmp表时的进程,php,mysql,join,temp-tables,locked,Php,Mysql,Join,Temp Tables,Locked,我有一个查询需要很长时间才能运行,但最终会生成一个新表。实际的连接并不那么慢,但它几乎所有的时间都花在“复制到tmp表”上,在这段时间内,所有其他查询(应该是到不相关的表)的状态都是“锁定”的。我正在优化长查询,但由于它是一个脱机过程,因此需要一段时间是可以的,但它不可以停止所有其他不应该与它相关的查询。有人知道为什么所有其他不相关的查询都会返回为“锁定”,以及如何防止这种行为吗?您的MySQL版本是什么 你用MyISAM吗?MyISAM在大型SELECT命令上有很大的锁定问题 你有专用服务器吗

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

您的MySQL版本是什么

你用MyISAM吗?MyISAM在大型SELECT命令上有很大的锁定问题

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

您认为“不相关的表”不应受到影响。他们不应该,据我所知,他们不是

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

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


祝你好运

MySQL在复制过程中不会锁定所有表,只锁定正在使用的表。显示一些查询会有所帮助。也许您有一些索引/外键问题,这些问题会锁定您认为不相关的表。