6

タイトルが示すように、私のデータベースでは、さまざまなクエリが遅いクエリログに表示されますが、手動で実行すると、10倍速く実行されます。

たとえば、paramsによる複数の順序を持​​つ比較的単純なselectクエリは、ログで最大100秒かかることがよくあります(yesテーブルは非常に大きいです)...しかし、同じDBで自分で実行すると、2秒ほどかかります。

サーバーのパフォーマンスを調べましたが、その時点で特定の速度低下やボトルネックはないようです。また、その期間に多くのクエリに時間がかかることはなく、1つだけです。

どうすればそのような問題の分析を開始できますか?

助けてくれてありがとう

4

1 に答える 1

6

問題のあるクエリがスローログに入ったとき、システムはよりビジーであった可能性があります。

遅いログは、rows_examined が結果セットよりも大きい場合、インデックスが十分に活用されていないことを示している可能性があります。したがって、実行時間は、クエリに問題があることを示す手がかりと見なす必要がありますが、rows_examined を使用すると、より決定的な答えが得られます。

ビジー状態のサーバーではクエリが遅くなる可能性があるため、負荷の高いサーバーではクエリ時間はパフォーマンスの測定値としては不十分です。EXPLAIN と SHOW PROFILE を使用してクエリをプロファイリングし、サーバーに過度の負荷をかけないように改善する必要があります。

結果がクエリ キャッシュに格納されないようにクエリをプロファイリングするときに使用SELECT SQL_NO_CACHE ...します。そうしないと、同じクエリの後続の実行でクエリ キャッシュが使用され、クエリのタイミングがずれることがあります。

于 2012-04-30T16:12:04.290 に答える