これは古い質問ですが、2億5000万行のクエリで更新にかかる時間を把握しようとしたときに、同様の答えを探していました。
実行する場合:
SHOW ENGINE INNODB STATUS \G
次に、[トランザクション]で問題のトランザクションを見つけ、次のセクションを調べます。
---TRANSACTION 34282360, ACTIVE 71195 sec starting index read
mysql tables in use 2, locked 2
1985355 lock struct(s), heap size 203333840, 255691088 row lock(s), undo log entries 21355084
重要なのは「ログエントリの取り消し」です。更新された行ごとに、私の場合、取り消しログエントリが追加されたようです(数秒後にもう一度実行して、追加された数を確認してください)。
ステータスレポートの最後までスキップすると、次のように表示されます。
Number of rows inserted 606188224, updated 251615579, deleted 1667, read 54873415652
0.00 inserts/s, 1595.44 updates/s, 0.00 deletes/s, 3190.88 reads/s
ここでは、適用されている速度の更新が1595.44行/秒であることがわかります(ただし、他の更新クエリを同時に実行している場合、この速度はクエリ間で分離される可能性があります)。
したがって、これから、21mが(250m-21m)229mの行が残っている状態で更新されたことがわかります。
229,000,000 / 1600 =残り143,125秒(143,125 / 60)/ 60=残り39.76時間
したがって、もう2、3日は親指をいじることができるように見えます。この答えが間違っていない限り、その場合はその前に更新します!