暂停并恢复运行mysql查询

时间:2011-11-23 12:40:34

标签: mysql sql

我的查询速度很慢(实际上这是从mysql.dump加载的数据)。现在我想检查已经加载了多少行。

select count(*) from my_table;

就数据加载而言,my_table被锁定,因此在加载dump之前我无法执行此sql。

Cmd       ID   State               User   Host           DB      Time   Query                           
Query     191  update              root   localhost      rehub   00:09  INSERT INTO `my_table` VALUES ...
Query     189  Waiting for table   root   localhost      rehub   06:25  select count(*) from my_table

那么有没有办法暂停查询191,执行查询189然后恢复查询191?

3 个答案:

答案 0 :(得分:4)

没有办法暂停查询。

如果您正在进行批量加载工作,您可能希望使用每隔几千行提交一次的批量加载程序。

此外,使用MyISAM而不是InnoDB将缓解此问题。 MyISAM是批量处理的理想选择,您不主要关注事务完整性。

答案 1 :(得分:2)

引用manual

  

默认情况下,--opt代表的所有选项都是打开的   因为--opt默认开启。

因此,当您将–-extended-insert=FALSE--add-locks=FALSE添加到mysqldump选项时,您的选择计数(*)应该有效。根据您的情况,请注意数据库的引用完整性问题。它会减慢进口速度!

答案 2 :(得分:0)

您仍然可以使用show innodb status

获取插入记录的数量