はじめに
「DBが遅い」、「SQLが遅い」、そんな悩みを抱えることは非常に多いと思います。
著者も様々なDBを使ったことがありますが、同じ悩みを抱え改善活動をしたことが多くあります。
今回は初心者でも試せるようなパフォーマンスチューニングのポイントを5分で解説してみようと思います(原則、RDBをベースとした解説になります)。
原因調査
まずはなぜ遅いのか、原因を探るのが鉄則です。ただし、遅くなる原因は1つとは限りません。
また、軽微な対応で解決することもあれば、インフラ/ハードウェアの問題の場合等、対処が難しいケースもあり得ます。経験からある程度ネックとなるポイントが想像できるケースもあるかと思いますが、まずは以下の順番で調査をしてみるのが原因解決への近道と思います(利用しているDBによっては不要なケースもあります)。
- DBの状態確認
- クエリの最適化
- インデックスの最適化
- データベース/テーブル設計の最適化
- 設定の最適化
- データベースサービスの見直し
- インフラ/ハードウェアの見直し
クエリ最適化のポイント
原因調査を行った結果、それぞれの原因に対して対策を行う必要があります。とはいえ、基本的には改善コストが小さなクエリの最適化から行うことが殆どだと思います。
クエリの最適化について、いくつかポイントをまとめてみましたので、是非以下を試してみると良いでしょう。
- インデックスを活用する
- 不要なカラムをSELECTしない
- LIMITを活用する
- サブクエリをJOINに変更
- EXPLAINで実行計画を確認
チューニングの落とし穴
パフォーマンスチューニングを行うにあたり、起こりがちな落とし穴もたくさんあります。以下の観点も注意深く見ていく必要があります。
- 別の処理/機能が遅くなっていないか?
- 参照が速くなったとしても、更新が遅くなっていないか?
- チューニング内容が本番環境でも有効か?
また、当然ですが、しっかりとテストはしましょう。処理内容・結果が変わってしまっては元も子もありません。
まとめ
今回は、DBのパフォーマンスチューニングについて、原因調査からクエリの最適化、そして落とし穴までを5分で理解できる形でご紹介しました。
パフォーマンス改善は、一朝一夕には達成できませんが、まずは現状を正しく把握し、コストが低いクエリの見直しから着手することが有効です。そして、単純に速度だけを追求するのではなく、他の処理に悪影響が出ていないかも常に確認しましょう。
今回のポイントを参考に、ぜひ日々のDB運用に活かしてみてください。