SQLの最適化


🐮 O/Rマッパが生成するSQLの改善

  • O/Rマッパが自動で生成するSQLが「N+1クエリ」を生成しないようにする
  • O/Rマッパがコストの高いクエリを発行しがちな場合はSQLを直接実行することも考慮

🐡 SQLの改善

  • 頻繁に実行されるクエリを重点的に改善する
  • TEST%」の場合はTESTまでがインデックスが有効になる(前方のみ)

👽 インデックスの貼り方の改善

  • WHEREORDER BYGROUP BYに合わせてインデックスを設置する
  • 複合インデックスは走査範囲(コスト)を意識して順序を設定する

🎂 Slow Queryから改善すべきSQLを確認する

  • Slow Queryのログを残しておき、よく使われていて遅いSQLのクエリを収集する
  • explainでindexが適切に使われているかを確認する

🏈 New Relicの活用

  • New Relicを使ってサーバサイドの負荷の高い箇所を見つける

🎳 パーティショニング

データを一定のルールで分割したテーブル(ノード)で保存しておくことで検索範囲の絞込やキャッシュの有効活用できます。
ログデータなどのように時系列で貯まるデータの場合はパーティショニングで保存しておき、3ヵ月間データを保持して、4ヵ月以前のテーブルを削除するといった使い方ができます。

🐞 適切なRDBを選択する

ミドルウェア 概要
MySQL スピードを重視。大量の更新や参照が必要な場合に向く。単純なクエリが得意で、テーブル結合などがやや苦手
PostgreSQL 機能性と堅牢性を重視。小規模なサービスや集計、分析が必要なサービスに向く

🚌 適切なミドルウェアを選択する

ミドルウェア 概要
ElasticSearch 分散処理ができ、高可用性のサーチエンジン
Redis オンメモリで高速、データの永続化も対応。ランキングなどの実装がしやすい

🐰 適切なクラウドのソリューションを選択する

ソリューション 説明
AWS Aurora MySQL/PostgreSQLに比べてパフォーマンスが高い。ストレージを自動で拡張。クラスタを構築でき、高可用性
AWS Aurora NoSQL。キャパシティが自動でスケールする

🍣 参考リンク

🚜 読む

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍