2009-04-06 18 views
7

私はMySQLで長時間実行しているプロセスを持っています。それは1週間実行されています。レプリケーションマスターにはもう1つの接続がありますが、私はスレーブ処理を停止しているので、他に何も進んでいません。MySQLプロセスが停止しているかどうかを確認するには?

このプロセスがまだ動作しているかどうかを確認するにはどうすればよいですか?私はそれが独自のデータベースインスタンスに置かれるのは長い時間がかかることを知っていましたが、これは私が予想していたよりも長くなっています。明らかに、まだ仕事をしているなら、私はそれを殺したくありません。もしそれがゾンビであれば、私は仕事をやり遂げる方法を知らないのです。

「送信データ」状態です。テーブルはInnoDBのものですが、クエリで使用されるFK参照はありません。 InnoDBステータスには、クエリが開始されてからエラーまたはロックが表示されません。

ご迷惑をおかけして申し訳ございません。

答えて

3

あなたはそれを殺してより良い指標を思いつく必要があります。

私は男のために仕事をしました。約3,500万行のテーブルを持っていました。あなたのような彼のバッチプロセスは、週にを実行していました。私はいくつかのインデックスを追加し、バッチ処理の順序と方法にいくつか変更を加え、全体を約2時間半にしました。時間。より遅いマシンで。

+0

インデックスされていない可能性もあります。しかし、指標を改善すればプロセスが実行されるのではないかというと、時間がたつにつれて、それをそのまま実行させることは確実です。この時点で何かをしているのであれば、私には分かりません。 – user87843

5

「SHOW PROCESSLIST」を試して、何がアクティブかを確認してください。

もちろん、あなたがそれを殺すと、それはそれを戻すだけの時間を要するかもしれません。

+0

プロセスリストの[送信データ]状態でアクティブになっています。アクティブになっている秒数が増加し続けます。私はそれが実際に何かをしているかどうかをどのように伝えるか分かりません。 – user87843

+0

ファイルサイズは変更されていますか?また、SHOW STATUS(さまざまなwrritesとcacheesの中で)にいくつかの効果があるはずです。 – dkretz

0

あなたが言ったことを考えれば、それは止まらない。ただし、合理的な時間に似たもので実際に終了することは絶対に保証されません。指標を追加することはほぼ確実に役立ちます。リファクタリングの種類によっては、一時テーブルを使用する一連のクエリにリファクタリングすることで、パフォーマンスが大幅に向上する可能性があります。多分それが終わるのを待っているとは思わない。

1

このサイズのデータ​​ベースでパフォーマンスを向上させるには、mongoDBなどのドキュメントベースのデータベースを参照することをお勧めします。データベースを格納するためのハードドライブの空き容量は増えますが、現在のスキーマによってはパフォーマンスが大幅に向上する可能性があります。

関連する問題