我的查询速度很慢(实际上这是从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?
答案 0 :(得分:4)
没有办法暂停查询。
如果您正在进行批量加载工作,您可能希望使用每隔几千行提交一次的批量加载程序。
此外,使用MyISAM而不是InnoDB将缓解此问题。 MyISAM是批量处理的理想选择,您不主要关注事务完整性。
答案 1 :(得分:2)
引用manual:
默认情况下,--opt代表的所有选项都是打开的 因为--opt默认开启。
因此,当您将–-extended-insert=FALSE
和--add-locks=FALSE
添加到mysqldump选项时,您的选择计数(*)应该有效。根据您的情况,请注意数据库的引用完整性问题。它会减慢进口速度!
答案 2 :(得分:0)
您仍然可以使用show innodb status