我们正在运行MySQL 5.6.15。我们有一个网站从数据库中获取数据以呈现每个页面。我们遇到一个问题,一旦在其中一个页面中启动了大型查询,(例如,某些页面具有启动大型查询以填充临时表等的计算工具......),所有其他页面在查询完成之前无法响应
在MySQL中是否可以启动大型查询,并且在运行时执行较小的查询并在大型查询之前完成它们?
其他细节:
此致
斯科特
答案 0 :(得分:1)
听起来你的长时间运行的查询可能会锁定表,使得在释放锁之前其他查询无法从这些表中读取。有一种解决方法。见https://stackoverflow.com/a/918092/259457:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM TABLE_NAME;
COMMIT;
您可以在运行较短的查询中执行此操作。这将忽略已放置在表上的任何锁。
然而,你必须意识到这将是一个"脏读,"这意味着您可以从表中选择非绝对最新的信息(它应该与在表上创建锁时的当前信息一样)。通常这不是一个问题,但需要考虑的事情。