2011-09-14 21 views
0

これは明らかな問題です。私は明白な答えを見つけることができませんでした。インデックス付きIDを持つ単純なmysqlデータベースを考えてみましょう。複雑なプロセスを必要としません。 WHERE句で行を読み込むだけです。それは本当にキャッシュされる必要がありますか? mysqlクエリを減らすことは明らかにすべてを満たしています。しかし、フラットなキャッシュファイルからテキストを読み込み、1〜100,000サイクルのforループでmysqlクエリをテストしました。フラットファイルからの読み込みは、わずか1〜2倍高速でした(しかし、2倍のメモリが必要でした)。 CPU使用率(SSHの上からの概算による)はほぼ同じでした。mysqlクエリの静的キャッシュの必要性?

フラットファイルキャッシュを使用する理由はありません。私は正しい?またはケースは長期的に異なっていますか?このようなシンプルなシステムでは、何が遅いクエリになるか? mysqlクエリを減らすことはまだ有効ですか?

P.S. memcachedのような内部QCやシステムについては議論しません。

答えて

0

問題の表示方法によって異なります。

  • いつでもmysql接続の数に制限があります。
    ビジー状態のサイトでmysql接続リソースを保持すると、最大接続エラーが発生する可能性があります。

  • TCPを経由してmysqlへの接続を確立するのは、データベースが別のサーバーにある場合です。この場合、ローカルディスクファイルへのアクセスはずっと高速になります。

  • サーバーがネットワーク外にある場合は、物理的な距離のコストが重くなります。

  • レコードが1日1回更新される場合、キャッシュに格納されたレコードは真に1回要求され、その日に再利用されます。

+0

重要なのは、長いクエリがないシンプルなシステムです。行を読み込むmysql接続の長さは数ミリ秒です。したがって、ビジー状態のWebサイトであっても、同時接続数が多くなることはありません。 – Googlebot

+0

したがって、ビジー状態のWebサイトであっても、同時接続数が多くなることはありません。これは誤った仮定です。どんなに単純なクエリであっても、データベースに接続するためのオーバーヘッドがまだあります。 – ajreal

関連する問題