mysql データベース クエリ キャッシュの原理は次のとおりです: 1. SELECT 操作の結果セットと SQL ステートメントをキャッシュします (キーは SQL、値はクエリ結果セットです); 2. 新しい SELECT ステートメントの場合到着したら、この SQL をキーとして使用し、キャッシュ内でクエリを実行し、一致するものがあれば、キャッシュされた結果セットを返します。

Mysql データベース クエリ キャッシュの原則は次のとおりです:
概要
クエリ キャッシュ (略して QC) は、SELECT ステートメントとそれによって生成されたデータ結果を保存します。何もすることがないので、この話題をまとめてメモしておきたいと思います!
超詳細な mysql データベース クエリ キャッシュの概要、収集する価値あり

動作原理
- # #SELECT 操作の結果セットと SQL ステートメントをキャッシュします。キーは SQL、値はクエリ結果セットです。
- 新しい SELECT ステートメントが到着した場合は、この SQL を次のように使用します。キャッシュ内でクエリするキー、一致する場合、キャッシュされた結果セットが返されます;
- 一致基準: キャッシュされた SQL ステートメントとまったく同じかどうか SQL の文字大文字と小文字が区別され、間のスペースは単純にキーと値の構造が保存されていると理解されます。キーは SQL で、値は SQL クエリの結果です。照合する場合は、Java の Stringquals() が使用されます。例:
- ユーザーから年齢を選択し、ユーザーから年齢を選択すると、大文字と小文字が異なるため一致しません。
##用途から年齢を選択し、ユーザーから年齢を選択すると一致しません。スペースが異なるため; sql の両側のスペースは無視でき、キーがトリムされてから、equals と比較されると考えることができます。
mysql 設定パラメータの表示
実行
「%query_cache%」のような変数を表示;
関連するパラメータを確認できます:
query_cache_type: 0 - クエリ キャッシュを有効にしません。1 - 有効、2 - 有効、デフォルト値は次のとおりです。 0; query_cache_size: キャッシュ領域の合計サイズを設定します。query_cache_size の設定に許可される最小値は 40K です。デフォルトは 1M です。推奨設定は: 64M/128M; query_cache_limit: キャッシュ領域にキャッシュできる単一のクエリ レコード セットの最大サイズを制限します。デフォルト設定は 1M query_cache_type が 1 の場合、クエリ キャッシュ要件が満たされている限り、クライアントのクエリ ステートメントとレコードのすべてのセットをキャッシュできます。SQL_NO_CACHE が SQL に追加された場合、キャッシュされません。 query_cache_type が 2 の場合、パラメータ SQL_CACHE が SQL に追加され、クエリ キャッシュの要件を満たしている限り、顧客のクエリ ステートメントとクライアント上のレコード セットをキャッシュできます。 #キャッシュ使用状況の表示
##「%Qcache%%」などのステータスを表示;
関連するパラメータを確認できます:

Qcache_hits: キャッシュ ヒット数;
- Qcache_inserts: キャッシュ内の挿入数、各キャッシュは 1 を追加します。これはキャッシュの量ではないことに注意してください。
クエリ キャッシュを有効にする
オプション query_cache_type = 1 を設定し、query_cache_size を設定します。 = 67108864;
注: query_cache_size の値は 100MB 以内で設定できます。 MySQL では、クエリ キャッシュはグローバル ロックによって制御されており、クエリ キャッシュのメモリ ブロックが更新されるたびにロックする必要があります。
クエリ キャッシュをオフにする
オプション query_cache_type = 0 を設定し、query_cache_size = 0 を設定します。
該当するシナリオ
同じステートメントが頻繁に送信され、テーブル データがあまり頻繁に変更されないシナリオ (一部の静的ページや特定のブロックなど) に使用されます。ページの情報は頻繁に変更されません。
クエリ キャッシュは最新のデータ結果をキャッシュする必要があるため、テーブル データに変更が加えられると (挿入、更新、削除、またはデータ変更を引き起こす可能性のあるその他の操作)、クエリ キャッシュが更新されます。したがって、更新頻度が非常に低く、読み取り専用クエリの頻度が非常に高いシナリオでは、クエリ キャッシュをオンにする方が有利です。
該当しないシナリオ
クエリ キャッシュでは、SQL ステートメント、接続されたデータベース、プロトコル バージョン、文字セット、文字セットなど、2 つの SQL リクエストがまったく同じであることが厳密に要求されます。他の要因もすべて影響します。クエリ キャッシュが適用できないいくつかのシナリオを次に示します:
サブクエリ;
- プロシージャ、関数、トリガー、およびイベントで呼び出される SQL 、または、これらの結果を参照してください;
- クエリに BENCHMARK()、CURDATE()、CURRENT_TIME()、CURRENT_TIMESTAMP()、NOW()、SLEEP などの特殊な関数が含まれる場合()、CONNECTION_ID()、CURRENT_DATE()、CURRENT_USER()、PASSWORD()、RAND()、UUID()、ENCRYPT()、LAST_INSERT_ID() など;
クエリには、mysql、information_schema、または Performance_schema が含まれます。
SELECT...LOCK IN SHARE MODE、SELECT...FOR UPDATE、SELECT..INTO OUTFILE/DUMPFILE、SELECT * FROM... WHERE autoincrement_col IS NULL; に類似したクエリ
SELECT 実行プランは一時テーブルを使用します;
- #テーブルを参照しないクエリ (SELECT 1 2 など);
- クエリによって警告が生成されました。
- SQL_NO_CACHE キーワードが SELECT ステートメントに存在します。
- にはパーティション テーブルが含まれます。
#その他の関連する無料学習の推奨事項: mysql チュートリアル(ビデオ)
以上がmysqlデータベースクエリキャッシュの原理は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。