我正在尝试查看当前批处理脚本中已完成的行数。但是,当我尝试计算行数时,它会无限期挂起(此表上大约有100个插入一秒钟)。该表约为3M行。这就是我正在做的事情:
select count(*) from my_table where is_done=1
解释看起来也很不错:
explain select count(*) from my_table where is_done=1
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE mturk_imdbentry ref is_done is_done 1 const 1471833 Using index
为什么发生'锁定',导致我无法检索计数?然后,我将如何估算计数?
答案 0 :(得分:0)
我曾经在Oracle上遇到类似的问题,使用了非常大的插入脚本。我的解决方法是这样的:
count = 0;
while(not done) {
do insert;
if( count mod 1000 = 0) then
update count in secondary log table;
end if;
count = count + 1;
}
如果我做100MM插页,我可以留意进度的步伐,并给自己估计完成。