sql >> Databasteknik >  >> RDS >> Mysql

MySQL Long Query Progress Monitoring

Jag vet att detta är en gammal fråga, men jag letade efter ett liknande svar när jag försökte ta reda på hur mycket längre tid min uppdatering skulle ta på en fråga på 250 m rader.

Om du kör:

SHOW ENGINE INNODB STATUS \G

Under TRANSAKTIONER hittar du sedan transaktionen i fråga, undersök detta avsnitt:

---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

Den viktiga biten är "ångra loggposter". För varje uppdaterad rad verkade det i mitt fall lägga till en ångraloggpost (försöker köra den igen efter några sekunder och se hur många som har lagts till).

Om du hoppar till slutet av statusrapporten ser du detta:

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

Här kan vi se att hastighetsuppdateringarna som tillämpas är 1595,44 rader per sekund (även om du kör andra uppdateringsfrågor samtidigt kan denna hastighet separeras mellan dina frågor).

Så från detta vet jag att 21 m har uppdaterats med (250 m-21 m) 229 m rader kvar att gå.

229 000 000 / 1 600 =143 125 sekunder kvar (143 125 / 60) / 60 =39,76 timmar kvar

Så det verkar som om jag kan vrida tummarna ett par dagar till. Såvida det här svaret inte är fel, i så fall kommer jag att uppdatera det någon gång innan dess!



  1. Hur listar man tillgängliga instanser av SQL-servrar som använder SMO i C#?

  2. Varför börjar tabellnamn i SQL Server med dbo?

  3. Hur man övervakar MySQL-behållare med Prometheus - Implementering på fristående och Swarm::Del ett

  4. fråga för horisontell layout av mysql-data