これが起こっている理由を誰かが知っているかどうか知りたいです。私のウェブサイトをAmazon RDSに移行したところです。Macbookでの実行に.2秒かかる最大のクエリは、最も高価なRDSインスタンスでの実行に1.3秒かかります。
明らかに、ローカルコンピューターでクエリキャッシュを無効にして(これをテストしました)、両方のデータベースはまったく同じです。 InnoDB、両方とも同じインデックスなどを持っています。これは、最速のRDSインスタンスのために私たちに莫大な費用(月額2000ドル)を費やし、私はすぐに信仰を失っています。何か案は?
RDSが提供するProvision IOPSを試してみてください。インスタンスサイズに関係なく、IOは制限されており、追加のコストでプロビジョニングIOPS設定を使用して、IOパフォーマンスを向上させることができます。
データベースインスタンスごとに最大3TBのストレージと30,000 IOPSをプロビジョニングできます。 m2.4xlargeインスタンスで50%の書き込みと50%の読み取りを実行するワークロードの場合、Oracleで最大25,000 IOPS、MySQLで最大12,500 IOPSを実現できます。ただし、最大30,000 IOPSをプロビジョニングすることで、レイテンシを短縮し、スループットを向上させることができる場合があります。実際に実現されるIOPSは、データベースのワークロード、インスタンスの種類、データベースエンジンの選択に基づいてプロビジョニングした量とは異なる場合があります。詳細については、Amazon RDSユーザーガイドの「実現IOPSに影響する要因」セクションを参照してください。
標準ストレージからプロビジョンドIOPSストレージに変換して、一貫したスループットと低いI/Oレイテンシを実現できます。これを行うと、短い可用性の影響が発生します。ダウンタイムなしで、IOPS(1000単位)とストレージをオンザフライで個別にスケーリングできます。要求されたストレージに対するプロビジョニングされたIOPSの比率(GB単位)は3〜10の間である必要があります。たとえば、1000 GBのストレージを持つデータベースインスタンスの場合、3,000から10,000 IOPSまでプロビジョニングできます。アプリケーションへのトラフィックの季節変動などの要因に応じて、IOPSを拡大または縮小できます。
主な理由は、コンピューターとAmazon RDSインスタンス間のレイテンシです。どこに拠点がありますか?米国にいる場合は、米国東部または米国西部のいずれかでRDSを使用していることを確認してください。あなたがヨーロッパや日本、アジアにいるなら、そこにも地域があります。
Rackspaceサーバーインスタンスでも同様の問題がありました。 Innodbが私の最善の努力で構成されていても、クエリの実行には時間がかかりました。最終的に、Rackspaceが提供する専用データベース製品に移行しました。私の推測では、データベースなどのディスク集約型サービスは、複数のインスタンス間でディスクが共有される仮想化サーバーではそれほどうまくいきません。一般に、mysqlはベアメタルまたはデータベース用に最適化されたその他のインフラストラクチャで最適に動作することで合意されているようです。私は間違っているかもしれませんが、これが私の結論です。