1

スロークエリをログに記録せずにスロークエリをチェックする方法は他にあるのでしょうか。非常にビジーなサーバーがあり、メモリと I/O を節約するために多くのログを記録する余裕がないとします。次に、遅いクエリがあるかどうかを確認する他の方法はありますか? クエリのプロファイリングを行うことはできますが、時間とメモリを最も消費しているクエリを特定するために正確に何をすべきかはまだわかりません。

mysql の管理を開始したばかりで、これを処理する方法がわかりません。どんなガイダンスも高く評価されます。

4

1 に答える 1

1

私は、遅いことがサーバーを動かしているものの最良の原因であることを発見しました.

long_query_time の適度に高い値から始めることをお勧めします。これにより、I/O とディスク容量が最小限に抑えられます。可能であれば、見つかったクエリを修正します。

それを使い果たしたら、その設定を下げてさらに見つけます。

「最悪」のクエリを見つけるには、pt-query-digest を使用します。

値が大きいと、たとえまれであっても、長いクエリしか検出されないことに注意してください。値を小さくすると、頻繁に実行される高速なクエリが検出され、これらが真の悪役になる可能性があります。

もう 1 つの方法は、slowlog を短時間だけ、または比較的アイドル状態のときにオンにすることです。あなたが見つけたものは、まだ非常に役立つかもしれません。

逸話: あるシステムでは、WHERE100% の CPU を実行するように が誤って記述されたクエリがありました。1 行の修正により、CPU が 2% に低下しました。

別の逸話: 特定のクエリは高速でしたが、頻繁に実行されました。少し計算すると、クエリは見られたほど頻繁に発行されるべきではなかったことがわかりました。クエリがループ外にある可能性があるのに、ループ内にありました。

進んでいた方向に戻る...頻繁にまたはゆっくりと実行されているものを手動で確認できます。SHOW PROCESSLISTそれは退屈で、ヒットまたはミスします。ただし、(1) 低速で頻度の低いクエリと、(2) 高速で頻度の高いクエリの両方を捕捉する場合があります。

SHOW VARIABLES;と を投稿したい場合はSHOW GLOBAL STATUS;、非効率性についての洞察につながる可能性のある数百の数式を確認します.

于 2015-05-15T16:26:30.893 に答える