RDSのクエリ実行の時間が掛かりすぎている場合の低減策はありますか?

0

WEBアプリの運営を行っています。

会員情報や統計情報等WEBアプリに必要な情報は全てRDSに保存して、WEBサーバーはEC2を使用しております。

現在RDSの設定画面からクエリキャッシュを有効化しているのですが、セッションのタイムアウトが起こる画面もあり、

全体的に画面の読み込みが遅くなっています。

SQLの実行速度を調べたところ、時間がかかっており、SQLの実行が遅い事が原因だと考えております。 SQL自体のindex等チューニングは行っているのですが、依然として状況は変わりません。

そもそもSQLの実行に時間が掛かりすぎている場合は、どのような対策を取ればよろしいのでしょうか? 出来ればサーバのスケールは上げずに他のAWSのサービスを使って解決したいと考えております。(コストがかかるので)

現在考えている対策としてクエリの実行結果をキャッシュして、クエリ自体の実行回数自体を減らしたいと考えております。 最良の方法があれば教えていただきたいです。

環境 WEBサーバ:EC2(各AZに3台づつ) DBサーバ:RDS(Aurora クラスターモード)

質問済み 2ヶ月前567ビュー
1回答
1
承認された回答

どのようなクエリの実行が遅いのかにもよると思いますが、AWS公式だと以下のドキュメントが参考になると思います。
https://repost.aws/ja/knowledge-center/rds-mysql-slow-query
https://repost.aws/ja/knowledge-center/aurora-mysql-slow-select-query

MySQLのチューニングであれば以下のブログが参考になると思います。
https://qiita.com/ichi_zamurai/items/fdbe3872a505c22ee431

他の方法だとコストが発生しますがElastiCacheを使用してクエリ結果をキャッシュさせるのはいかがでしょうか?
https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/WhatIs.html

profile picture
エキスパート
回答済み 2ヶ月前
  • 回答ありがとうございます。

    Elasticacheのクエリキャッシュも検討したのですが、調べている過程でDynamoDBも有効だと思うのですが 一般的にはクエリキャッシュするにはElasticacheなのでしょうか? それともユースケースによりけりでしょうか?

  • 少し古いですが以下のブログが参考になると思います。 https://dev.classmethod.jp/articles/elasticache-is-very-good-lets-review/#toc-9
    確かにDynamoDBも使えると思いますが、クエリの実行回数によってはコスト高になります。

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン