2012-03-03 6 views
0

私は非常に頻繁に引っ張られる必要があるそれぞれ〜10,000行の約10のテーブルを持っています。例えば非常に大きな行数を頻繁に引っ張る - ここにmemcachedが必要ですか?

、国のリスト、世界のすべての学校のリストなど

PHPは(私の知る限りでは)メモリ内のこのようなものを保持することはできませんので、私は、SELECTのためにサーバーを照会する必要があります*毎回FROM TABLE。ここでmemcachedを使うべきですか?最初は明白ですが、2番目の考えでは、mysqlはすでにキャッシュされていません。これはほとんど冗長になりますか?

私はどのようにmysqlのキャッシュデータ(またはそれもテーブル全体をキャッシュしている場合)のあまり理解していません。

答えて

2

あなたはMySQLのクエリキャッシュを使用することができますが、その後、あなたはまだ接続を確立し、クエリを実行するためにDBのリソースを使用しています。ページが比較的静的である場合、別のオプションはopcode cachingです。しかし、私はmemcachedが最も柔軟な解決策だと思います。たとえば、アプリケーション内のさまざまなコードポイントからアクセスする必要がある国のリストがある場合は、永続ストア(mysql)からデータを取り出してmemcachedに格納することができます。その後、データは、ビジネス要件に応じて、アプリケーションの任意の部分(バッチプロセスやcronジョブなど)で使用できます。

0

あなたは確かにここでキャッシュの一部種類を、必要があります。データベース内およびその周囲のキャッシュ層は、memcachedが提供できるものよりかなり効率が悪いです。

つまり、クエリーに基づいて生成しているコンテンツをキャッシュするのではなく、クエリー自体をキャッシュするという結論に達している場合は、結論に飛びついていると思います。 - より多くの分析が必要です。これらのクエリの内容以外の

どのようなデータは、出力生成時に使用されていますか?ページキャッシュまたはページフラグメントキャッシュ(または、逆プロキシをキャッシュする)はより意味がありますか?これらのクエリを「頻繁に」実行することは本当に必要ですか?基礎となるデータはどれくらいの頻度で変更されますか?それが発生したときに通知イベントはありますか?

また、WHERE句のないクエリは、特にコードの匂い(間違ったやり方が行われている可能性があることを示しています)が表示されます。