MySQL インターフェイスを備えた Amazon で RDS を使用しています。私のアプリケーションは EC2 ノードで実行され、データベースを読み取り/更新しますが、読み取りと書き込みの数が多すぎてパフォーマンスが低下します。ほとんどの場合、接続数は許可された制限を超えています。Elasticache を使用してパフォーマンスを向上させることを検討していましたが、これを効果的に使用するためのデータベースの構成方法に関する Web 上のリソースが見つかりませんでした。これは、読み取り/書き込みパフォーマンスを向上させる最善の方法ですか? 助言がありますか?
3 に答える
memcache を単に「オン」にすることはできません。データベース クエリの結果が memcache にキャッシュされるように、memcache と対話するコードを記述する必要があります。このユーザー ガイドをご覧ください。memcache の使用方法については、良いアイデアが得られると思います。
http://www.memcachier.com/documentation/memcache-user-guide/
パフォーマンスは、使用されるクエリのタイプと構造に関連しているため、最適化の余地があるかもしれません。おそらく、使用された正確なクエリに関する詳細を提供できます。ただし、別の角度からこれに取り組むこともできます。自動スケーリング機能があれば、必要に応じてデータベースを追加のマシンに単純にスケールアップできるため、パフォーマンスの最適化がなくても無限の数の接続に対応できます (もちろん、最適化するとパフォーマンスが向上します)。これは RDS では不可能ですが、EC2 で実行されている他のクラウド DB プロバイダーが少なくとも 2 つあり、自動スケーリングを提供していることを認識しています - www.xeround.comとwww.enterprisedb.com。
Elasticache を rds db の 2 番目のレベルのキャッシュとして使用できます。Java を使用する場合は、hibernate-memcached ライブラリを使用できます。ただし、データに応じて、2 次キャッシュに何をどのようにキャッシュするかを構成する必要があります。
さらに、少なくとも RDS で読み取りレプリカを使用して、読み取りトラフィックを分割することができます。
(使用しているインスタンス タイプは何ですか? I/O 容量が異なることがわかりましたか?)