1

以前はHerokuBasicデータベースを使用していましたが、大量のデータベースクエリを含むサイトでの操作が非常に遅いことがわかりました。問題の解決に役立つことを期待して、3日前にHerokuCraneデータベースにアップグレードしました。ただし、クエリは同じように遅いようです。同じ操作を2回続けて実行することでさえ遅いように見えますが、キャッシングのために高速であると期待しています。

私たちのデータベースサイズはわずか15.4MBですが、使用しているCraneデータベースは400MBのキャッシュを提供します。理論的には、データベース全体をキャッシュできるように思われるため、非常に高速なクエリ処理が可能になります。これは事実である必要がありますか?問題の解決またはトラブルシューティングを行うにはどうすればよいですか?また、キャッシュディスクはブロックベースですか、それともクエリベースですか(つまり、キャッシュを利用するには、まったく同じクエリを2回実行する必要がありますか?)

ありがとう。

4

2 に答える 2

4

参考までに、私は Heroku Postgres チームで働いています。

一般に、Postgres は、ディスクから取得した基礎となるテーブル データをキャッシュするため、少なくとも 1 回操作してメモリにロードする必要があります。ただし、複雑なクエリを実行している場合、データをキャッシュしてもそれほど多くは得られず、Rails がデータベースに十分な作業を委譲できず、アプリケーションの CPU がバインドされ、データベースが十分に活用されないことがあります。

クエリとインデックスの最適化を掘り下げて、Postgres の魔法をもう少しうまく機能させたいと思います。実行することから始めて、クエリのどの部分に時間がかかっているかを把握EXPLAINできます。EXPLAIN ANALYZE

データベースの使用を最適化するための優れたリソース: http://www.freebsddiary.org/postgresql-analyze.phpおよびhttp://wiki.postgresql.org/wiki/Performance_Optimization

Rails で EXPLAIN を使用する例: Postgres/rails の Explain データを使用してクエリを最適化する方法を理解する

于 2013-02-03T21:29:54.317 に答える
0

この小さなデータベースでは、パフォーマンスの問題は発生しません。ここでお勧めするように、アプリのプロファイルを作成し、遅い部分を抜き出します: Rails Performance Tuning for Production?

于 2013-02-05T19:14:44.390 に答える