Wiem, że to stare pytanie, ale szukałem podobnej odpowiedzi, próbując obliczyć, jak długo moja aktualizacja zajmie zapytanie obejmujące 250m wierszy.
Jeśli biegasz:
SHOW ENGINE INNODB STATUS \G
Następnie w obszarze TRANSAKCJE znajdź daną transakcję, zapoznaj się z tą sekcją:
---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
Ważnym bitem jest „cofnij wpisy dziennika”. Dla każdego zaktualizowanego wiersza w moim przypadku wydawało się, że dodano wpis do dziennika cofania (próbuję uruchomić go ponownie po kilku sekundach i zobaczyć, ile zostało dodanych).
Jeśli przejdziesz do końca raportu o stanie, zobaczysz następujący komunikat:
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
Tutaj widzimy, że stosowane aktualizacje prędkości wynoszą 1595,44 wierszy na sekundę (chociaż jeśli uruchamiasz inne zapytania aktualizacyjne w tandemie, ta prędkość może być rozdzielona między zapytaniami).
Więc z tego wiem, że 21m zostało zaktualizowanych (250m-21m) 229m rzędów pozostało do przejścia.
229 000 000 / 1600 =143 125 sekund do końca (143 125 / 60) / 60 =39,76 godzin do końca
Wygląda na to, że mogę kręcić kciukami jeszcze przez kilka dni. Chyba że ta odpowiedź jest błędna, w takim przypadku zaktualizuję ją wcześniej!