4

約550万レコードの単一テーブルを持つローカルデータベースがあります。Heroku Postgresに新しいデータベース(基本計画)を作成し、ローカルダンプを復元しました。psqlを起動し、いくつかのクエリを実行すると、速度がローカルよりも大幅に遅いことに気付きました。次に、クレーンプランを使用して別のデータベースをプロビジョニングしましたが、数値も同様に不良です。

ここにいくつかの数字があります:


select count(*) from table;
ローカル:1216.744ミリ秒
Heroku(基本):4697.073ミリ秒
Heroku(クレーン):2972.302ミリ秒


select column from table where id = 123456;
ローカル:0.249ミリ秒
Heroku(基本):127.557ミリ秒
Heroku(クレーン):137.617ミリ秒


これらの大きな違いはどのように可能ですか?これは完全にハードウェアの違いに関連しているのでしょうか?スループットを向上させる簡単な方法はありますか?

4

3 に答える 3

6

Lukos が示唆しているように、単一行の選択の 120 ~ 130 ミリ秒は、ネットワーク レイテンシを示している可能性が高く、データベース サーバーの近くでクエリを実行することで、これを短縮できます。ただし、2 ~ 3 秒の待機時間は、データベースの速度、特に I/O スループットに関係している可能性が高くなります。これが、Heroku が提供するデータベースの違いがキャッシュ サイズに関係していることを強調する理由です。

Heroku Postgres は、データをAmazon EBSに保存します。(これはインシデント レポートで明らかにされており、ついでに 1 TB の制限についても説明します。) EBS のパフォーマンスはジェットコースターのようです。ローカル ディスクよりもはるかに重要です。読み込みが速いものもあれば、遅いものもあります。ボリューム全体が 100 KB/秒に低下することもあれば、相互接続を使い果たすこともあります。

EC2 でデータベースをホストした経験では、EBS で RAID 10 を実行すると、パフォーマンスの違いが滑らかになることがわかりました。Heroku がこれを行うとは思えません。データベース プランの価格を大幅に上回るコストがかかるからです。AWS は最近、EBS のプロビジョンド IOPS を発表しました。これにより、専用のキャパシティーに対して料金を支払うことができるようになり、予測可能性がさらに向上しますが、コストも増加します。

于 2012-09-21T16:05:14.690 に答える
3

では、オンライン データベース サービスがローカル データベースよりも遅くなる可能性があるかどうかを尋ねていますか? はい、もちろん速度は遅くなりますが、対処すべきネットワーク遅延がすべてあります
。速度を上げる簡単な方法はありますか? より高速なネットワーク リンクや、Heroku のデータ センターの隣にオフィスを移動するなどの明らかな問題は別として - いいえ

于 2012-09-21T15:46:28.027 に答える