Amazon EC2(シンガポール地域)でウェブサイトを公開し、MySQL RDSインスタンスをデータストレージに使用しました。パフォーマンスを除くすべてが非常にうまく機能しています。
私のすべてのクエリ、特にselectステートメントのパフォーマンスは非常に遅いようです。ローカルPCでこの問題を確認すると、非常にうまく機能しています。しかし、RDSインスタンスからデータを取得しようとすると、非常に遅くなります。一部の選択ステートメントでは、データをフェッチするのに2〜3秒かかります。
すべてのテーブルインデックスを適切に調整し、必要に応じて正規化/非正規化しています。 RDSカスタムパラメータグループに必要なすべての設定を行いました(例max_connection、bufferなど)。何かが欠けているかどうかはわかりませんが、それは私にとってはうまくいきませんでした-パフォーマンスは向上しませんでした。
だから、誰かがこの問題で私を助けてくれますか?
何らかの理由で、MySQLクエリキャッシュがRDSでデフォルトでOFFになっていることに注意してください。今週、私たちは苦労していることを学びました。
これは最初のクエリのパフォーマンスには役立ちませんが、一般的に速度を上げることができます。
クエリキャッシュを再度有効にするには:
query_cache_size
およびquery_cache_type
(免責事項:私はDBAではないため、ここで不足していることがあるかもしれません)
遅延を最小限に抑えるために、RDSとEC2インスタンスを同じリージョンだけでなく同じアベイラビリティゾーンにも配置することが重要です。
アイルランドでEC2でホストされているAPIを使用し、別のプロジェクト用にセットアップした米国バージニア州のMySQLクラスターにデータベースを移動し、すべてのSQLクエリのラウンドトリップによりAPIが使用できなくなりました。
私にとっては、MySQLとは何の関係もなく、むしろ私がt2.medium
。問題は、DBの負荷が高すぎてバランスが低下し続け、最終的に必要な場所で1時間ごとにクレジットがはるかに少なくなるため、CPUクレジットが不足したことです。
これは、RDS CloudWatchのCPU Credit Usageで見たものです。
同じ問題がある場合は、別のインスタンスに切り替えるときがあります。インスタンスタイプのリストは次のとおりです。
https://aws.Amazon.com/rds/instance-types/
お役に立てれば。
RDS MySQLのパフォーマンスは、システムの読み取り率が高いと仮定すると、次の方法で向上できます。
最初に、これらのクエリを調べることを強くお勧めします
完全なプロセスリストを表示
詳細については SHOW FULL PROCESSLIST をご覧ください。
これにより、各クエリにかかる時間が表示されます。
その後、使用することができます
説明する
詳しくは [〜#〜] explain [〜#〜] をご覧ください。
これにより、クエリの機能強化が必要な場合に表示されます
プロファイリングを使用すると、クエリに時間がかかっている場所を確認できます。以下のクエリを使用します。
これにより、クエリのステータスと、クエリが時間を費やしている場所がわかります。プロファイリングによって返されるすべての時間の合計がクエリの実際の実行時間よりも短い場合、ネットワーク帯域幅などの他の要因が原因である可能性があります。