スロークエリ改修後の性能比較

スロークエリを改修した場合の性能比較をご紹介します。

ボトルネック

負荷テストの結果、DBサーバのCPUリソースが100%張り付き状態になっていました。

3秒以上のクエリを確認しましたが、該当するスロークエリは存在しません。1秒以上にしたところ1種類のスロークエリが特定できました。

該当SQLに対してExplainを実施したところ、利用しているビュー内でフルスキャンを実施していることが判明しました。

スロークエリが発生する場合は、3秒以上かかるようなクエリが出ることが多くあります。今回のケースでは、そこまで極端な速度遅延は発生していませんでしたが、呼び出し頻度が高いクエリだったためにDBサーバのCPUを食いつぶす結果となっていました。

実際のスループットと平均応答速度の推移は次のようになりました。

チューニング前のスループットと平均応答速度

チューニング前のスループットと平均応答速度

※グラフの見方は、「限界スループットの確認方法」を参照ください

チューニング内容

ビューで全件取得(フルスキャン)し、そこから日付で絞り込みを行うつくりになっていました。長年の運用でデータ量も非常に多い状態でした。そこで、次の改修をご提案し対応いただきました。

  • ビューの利用をやめ通常のSQLとし、事前に日付で絞り込みを行うことでフルスキャンを回避させる

性能比較

チューニングを実施いただき、スループットは10倍以上、平均応答速度も5分の1と大幅に性能向上を図ることができました。

下のグラフはチューニング前後のスループットと平均応答速度を比較したものです。

チューニング前後のスループットと平均応答速度比較

チューニング前後のスループットと平均応答速度比較

まとめ

データ量が多くフルスキャンしているSQLを改修することで、10倍以上の性能向上を実現できました。

性能限界の原因となっているボトルネックを特定し、ピンポイントでチューニングができると大きな成果を上げることが可能です。

具体的な進め方が気になる方は、「負荷テストのすすめかた」をご覧ください。

ディーネットでは、負荷テストに関するお問い合わせも受け付けておりますので、お気軽にご相談ください。

コメントは受け付けていません。