sql >> Databáze >  >> RDS >> Mysql

MySQL Long Query Progress Monitoring

Vím, že je to stará otázka, ale hledal jsem podobnou odpověď, když jsem se snažil zjistit, jak dlouho bude moje aktualizace trvat na dotazu o 250 milionech řádků.

Pokud spustíte:

SHOW ENGINE INNODB STATUS \G

Poté v části TRANSAKCE vyhledejte příslušnou transakci a prozkoumejte tuto sekci:

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

Důležitým bodem je „vrátit položky protokolu zpět“. Pro každý aktualizovaný řádek se v mém případě zdálo, že se přidává záznam zpět do protokolu (zkusím to spustit znovu po několika sekundách a uvidíme, kolik jich bylo přidáno).

Pokud přeskočíte na konec zprávy o stavu, uvidíte toto:

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

Zde vidíme, že rychlost aktualizací je 1595,44 řádků za sekundu (ačkoli pokud spouštíte další aktualizační dotazy v tandemu, pak tato rychlost může být mezi vaše dotazy oddělena).

Takže z toho vím, že bylo aktualizováno 21 m s (250 m-21 m) 229 m řádků, které zbývají do konce.

229 000 000 / 1 600 =143 125 sekund do konce (143 125 / 60) / 60 =39,76 hodin do konce

Takže se zdá, že můžu ještě pár dní kroutit palci. Pokud tato odpověď není špatná, v takovém případě ji někdy před tím aktualizuji!



  1. 4 způsoby, jak v Oracle najít řádky, které obsahují velká písmena

  2. 2ndQuadrant na PostgresConf USA 2018

  3. Neznámý hostitel serveru MySQL

  4. Rychlý a nejlepší trik pro obnovu souborů SQL Server MDF