0

私は自分のギャラリーのリストを作成しています (次/前を使用)。問題は、写真を変更するたびに次/前を選択すると、クエリに最大 0.1 秒かかることです。2 つのことを考えると、これは悪いことです。

しかし、1 つのクエリで写真のすべての ID を選択すると、たとえば 1000 件の結果が得られます (クエリの時間は約 0.15 秒です)。それらからツリーを構築し、その中の次/前を簡単に見つけることができます。しかし、メモリが必要です。私のサーバーでは、パフォーマンス (メモリではなく CPU) に問題があるため、おそらくより良い解決策になるでしょう。私は正しいですか?

もしそうなら、どのように、またはどこにそのツリーを保管できますか? すべての画像が 1 つのテーブルにあり、ブラウジングはユーザーごと (アップロードされた写真など) であり、順序 (時間、タイプ、スコアなど) が異なるため、さまざまなものを使用できます。そのため、事前にすべての木をキャッシュすることはできません。巨大になるだけです (さまざまなユーザーが写真をほぼ瞬時にアップロードしている間に変化する可能性があります)。ユーザーが特定のギャラリーを開いたときに、すべてのユーザーに新しいツリーを作成することを考えました。それを SESSION に保存するのは「ばかげている」ようです。これは、そのようなものに最適化されていないためです。

4

1 に答える 1

0

SELECT多くの場合、MySQL クエリ キャッシュは、クエリを高速化する簡単な方法です。クエリ キャッシュは最近のクエリの結果を保存し、同じクエリが繰り返されたときにそれらを返します。つまり、最初にクエリを実行した後は、後続の同じクエリがはるかに高速になります。クエリ キャッシュは古いデータを返しません。テーブルが変更されると、クエリ キャッシュ内の関連エントリがフラッシュされます。

ソース: http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

クエリ キャッシュが使用されているかどうかを確認するには、次のクエリを実行します。

SHOW VARIABLES LIKE 'query_cache_type';

値がOFFまたはの場合は0、次の 2 行を MySQL 構成に追加します。

query_cache_type = 1
query_cache_size = 64M

その後、MySQL サーバーを再起動します。

于 2013-06-14T10:24:53.717 に答える