Знам, че това е стар въпрос, но търсех подобен отговор, когато се опитвах да разбера колко време ще отнеме актуализацията ми при заявка от 250 милиона реда.
Ако стартирате:
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 реда в секунда (въпреки че ако изпълнявате други заявки за актуализиране в тандем, тогава тази скорост може да бъде разделена между вашите заявки).
Така че от това знам, че 21 m са били актуализирани с (250 m-21 m) оставащи 229 m редове.
229 000 000 / 1600 =143 125 секунди (143 125 / 60) / 60 =39,76 часа остават
Така изглежда, че мога да въртя палци още няколко дни. Освен ако този отговор не е грешен, в този случай ще го актуализирам преди това!