0

私は の初心者ですが、memcachedデータベースの内部構造とシステム プログラミングにはかなり慣れているので、これは奇妙に思えました。メモリベースのソリューションがディスクベースのソリューションよりも高速であることは明らかですが、キャッシュをサポートするデータベースはデータの構造についてより多くのことを知っているため、キャッシュを効果的にキャッシュする方法についてより良いアイデアを持っているべきではありませんか?

次の 3 つの可能性があります。

  1. 「で展開されたマシンにはmemcached、データベース サーバーが通常行うよりも多くの RAM があります。」同じ量のメモリを追加すると、ソリューションのパフォーマンスは同じになりますか?
  2. 「データベース内の ACID トランザクション プロパティを確保することで、このスピードアップを実現するのは難しくなります。」データベースのトランザクション保証をキャッシュのトランザクション保証と一致するように緩和することで、同様の規模のスピードアップを実現することは可能ですか?
  3. 「データベース クエリを複数のキャッシュ マシンに均等に分散することで、高速化が可能になります。」データベースのシャーディングは同じことをしますか?

これらの組み合わせでない場合、キャッシング レイヤーを追加することで、データベースではできないテーブルにさらに何がもたらされるのでしょうか? データベース ベンダーは、より優れたキャッシング レイヤーを自分で実装しない/できないのはなぜですか?

4

1 に答える 1

1

memcached の使用を成功させるには、「データベース レベルのキャッシュ」が重要ではありません。それはほとんど決して良い考えではありません。

代わりに、「もの」を構築するために DB から取得するすべてのものについて考え、そのものをキャッシュして、次回はそれを行う必要がないようにします。

また、データベースではない多くのものをキャッシュできます。アプリで構築または取得するのにコストがかかるもの。それをキャッシュします。

DB クエリが十分に高速な場合は、キャッシュしないでください。

于 2013-06-21T02:59:03.083 に答える