私はそれを遅くするすべての単一のページに対して多くのクエリを実行する必要があるアプリケーションを持っています。
キャッシュシステム(Redis)を使用しようとしましたが、実装は少し複雑で、すべてのクエリが多くの依存関係に依存しているため、時間がかかります。
読み取り専用である必要があるデータベースの別のクローンがメモリ内にあると思いますが、データベースの更新または挿入が発生するたびに、メモリ行を更新する必要がありますか?これは効果的で実用的だと思いますか?もしそうなら、私がpostgresを使用しているので、これを達成するための現在の方法はありますか?.
私の2番目のアイデアは、すべてのクエリにsphinx検索エンジンのようなものを使用することでした。この場合、リアルタイムインデックスを使用する必要があります。
これは機能していますか、それともより良い解決策がありますか。
注意:データベースのサイズは約50GBで、すべてのメモリを取得できます。
よろしく、、、
一般的に、それは賢い考えではありません。データベースは賢い人によって書かれ、キャッシュにできるだけ多くのメモリを使用します。ディスクを頻繁に叩くと、メモリに問題が発生します。同じ限られたメモリに別のコピーを保持しても、状況は改善されません。
誰かがすべきことはベースライン分析です。ボトルネックは何ですか?修理する。より多くのメモリ、SSDがここでの典型的なステップです。最も費用のかかるクエリは何ですか?経験によれば、そこには多くのダメージを与えるハンマーがいくつかある可能性があります。問題は「クエリが多すぎる」ではなく、「一体何がインデックスであるか」です。
しかし、インメモリデータベースは通常、違いを生むべきではありません。何にでも価値のあるデータベースは、キャッシュと同じくらい多くのメモリをすでに使用しているからです。つまり、当然のことながら、一部の管理者が「メモリを節約する」ために途方もなく低い制限を設定し、パフォーマンスの問題が発生しない限りです。
そして、あなたは本当にキャッシングから始めるべきです。