sql >> データベース >  >> RDS >> Mysql

MySQLロングクエリ進捗監視

    これは古い質問ですが、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日は親指をいじることができるように見えます。この答えが間違っていない限り、その場合はその前に更新します!



    1. MySQL:結合の種類の簡単な内訳

    2. Access2016でテーブルからサブフォームを作成する方法

    3. MySQL:NULLフィールドはどのくらいのスペースを使用しますか?

    4. シェルスクリプトからMySQLに自動ログインする方法は?