我得到了相当慢的查询(实际上这是从mysql.dump加载数据)。现在,我想检查一下已经加载了多少行。
select count(*) from my_table;就数据加载而言,my_table是锁定的,所以在加载转储之前我不能执行这个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?
发布于 2011-11-23 20:50:51
不,没有暂停查询的方法。
如果您正在进行批量加载工作,则可能需要使用每几千行提交一次的批量加载程序。
此外,使用MyISAM而不是InnoDB可以缓解这个问题。对于您主要不关心事务完整性的批量处理,MyISAM是一个很好的选择。
发布于 2011-11-23 21:54:16
引用manual的话:
默认情况下,--opt所代表的所有选项也是打开的,因为--opt在默认情况下是打开的。
因此,当您将–-extended-insert=FALSE和--add-locks=FALSE添加到mysqldump选项时,您的选择计数(*)应该可以工作。根据你的情况,注意你的数据库引用完整性的问题。它会减慢导入的速度!
发布于 2011-11-23 21:35:09
您仍然可以使用show innodb status获取插入的记录数
https://stackoverflow.com/questions/8242353
复制相似问题