我有一个非常慢的查询,我需要不时在MySQL数据库上运行。如果您尝试更新正在查询的表,MySQL会执行什么操作?
我发现尝试更新正在查询的表将被阻止,直到查询完成。
我想这是有道理的,否则查询的结果可能不一致,但对我来说并不理想,因为查询的重要性比更新低得多。
所以我的问题真的有两个部分:
出于好奇,究竟是什么做的MySQL在这种情况呢?它是否在查询期间锁定表格?或者尝试在更新之前锁定它?
有没有办法让慢查询不阻塞?我想这些选项可能是:
- 当需要更新时终止查询。
- 在更新发生之前对表的副本运行查询
- 只让查询出错。
任何人有什么想法?
谢谢。不幸的是,我被困在MyISAM中......否则,听起来像切换到InnoDB将是答案... – Ben 2009-01-12 15:23:48
UPDATE LOW_PRIORITY不允许UPDATE与SELECT相同。它在决定下一次要授予的锁定时与排队顺序有关。 – 2009-01-12 15:57:00