MySQLデータベースクエリキャッシュの概要

アウトライン

クエリキャッシュSELECT文の結果と結果のデータを格納し、(クエリキャッシュは、QCを呼びます)。この概要はまた、メモも何かをする他に何もありません!

収集価値のMySQLデータベースのクエリキャッシュの超詳細な要約、

 


ワークス

次のようにクエリキャッシュは動作します:

SELECT結果セット・キャッシュ操作およびSQLステートメント、SQLへの鍵、クエリの結果セットの値。

キャッシュSQLクエリにキーとしてこれにSELECTステートメントに新しいならば、試合は、返されたキャッシュされた結果セットを置けば、

条件に一致する:まったく同じSQL文のキャッシュかどうか、SQLの文字は、Javaストリングの照合を使用して、SQLへの鍵、単純にキーと値のストレージ構造として理解、途中でSQLクエリ結果の値は大文字と小文字が区別され、スペースあり例えば、等号():

異なる場合ので一致しません、ユーザーからのAGEを選択するために、ユーザからの年齢を選択し、
利用者からの選択年齢での使用からSELECT年齢が異なる空間ので一致しません。

SQLのスペースを無視することができ、それはトリムを行ったキー操作の等号比較した後、さらに考えることができます。


ビューのMySQLの設定パラメータ

実行

「%のquery_cacheの%」のようなショーの変数。
収集価値のMySQLデータベースのクエリキャッシュの超詳細な要約、

 

あなたは、関連するパラメータを見ることができます:

query_cache_type:0クエリキャッシュが有効になっていません。1-有効、2対応、デフォルト値は0です。
query_cache_size:チーフは、キャッシュサイズを設定し、最小許容値は、推奨query_cache_sizeの40K、デフォルト1M、設定されている:64M / 128Mを。
query_cache_limit:単一のクエリのレコードセットのサイズをキャッシュできる最大キャッシュを制限し、デフォルトの設定は1Mです

彼らはクエリキャッシュの要件を満たしていることを提供し、1にquery_cache_type、クライアントクエリとレコードセットをキャッシュすることができ、もしSQLプラスSQL_NO_CACHEしませんキャッシュ。

SQL_CACHE、およびレコードのクエリキャッシュ、クライアントのクエリの要件を満たすと設定し、それをキャッシュすることができます:query_cache_typeは限りSQLパラメータが追加として、2です。


ビューのキャッシュの使用

「%Qcache %%」のようなショーのステータス。
収集価値のMySQLデータベースのクエリキャッシュの超詳細な要約、

 

あなたは、関連するパラメータを見ることができます:

Qcache_hits:キャッシュヒット; 
Qcache_inserts:この番号がキャッシュされていないことに注意し、回数キャッシュ、キャッシュたびにプラス1を挿入します。

クエリキャッシュを有効にします

オプションquery_cache_type = 1を設定し、query_cache_size = 67108864を設定します。

注意:値は100メガバイト未満のquery_cache_sizeに設定されています。MySQLのクエリキャッシュはグローバルロック中で制御され、各更新クエリキャッシュ・メモリ・ブロックをロックする必要があります。


クエリキャッシュを閉じます

オプションquery_cache_type = 0を設定し、query_cache_size = 0を設定します。


該当シーン

頻繁には、同じ文のために提出され、テーブルのデータが非常に頻繁シーンなど、いくつかの静的なページなどの変更、または頻度の低いページを発生情報の変更の一部ではありません。

キャッシュ結果に最新のデータのクエリキャッシュ、そのデータテーブルの変更(挿入、更新、削除、またはそれ以外の変更は、動作データを生成してもよい)に、クエリキャッシュがリフレッシュされることになります。このように、周波数が非常に低く、シーンで非常に高い周波数の読み取り専用クエリ、クエリキャッシュを開くと、更新のために非常に有利です。


NAシーン

SQL文を含め、まったく同じに2つのSQLリクエストのクエリキャッシュ厳しい要件は、接続されたデータベース、プロトコルバージョン、文字セットおよびその他の要因に影響を与えます。次のクエリキャッシュは、いくつかのシナリオには適用されません。

  1. サブクエリ;
  2. プロシージャ、関数、トリガー、SQLで呼ばれるイベント、またはあなたは、これらの結果を参照してください。
  3. クエリが特殊な機能の数を含む場合、例えば:ベンチマーク()、CURDATE()、CURRENT_TIME()、CURRENT_TIMESTAMP()、NOW()、SLEEP()、CONNECTION_ID()、CURRENT_DATE()、CURRENT_USER()、PASSWORD()、 RAND()、UUID()、ENCRYPT()、LAST_INSERT_ID()などが挙げられます。
  4. mysqlの、INFORMATION_SCHEMAまたはperformance_schemaに関連するクエリ。
  5. 类似* FROM ...共有モードでロックをSELECT、UPDATE、SELECT..INTO OUTFILE / DUMPFILE ... FOR SELECT、SELECT ... autoincrement_colはNULL的查询され;
  6. 一時テーブルを使用するための実行計画を選択します。
  7. クエリは、例えば、1 + 2を選択して、任意のテーブルを参照しません。
  8. クエリは警告(警告)を発生します。
  9. SQL_NO_CACHEキーワードSELECTステートメントがあります。
  10. パーティションテーブルに関連します。

目に見える、非常にキャッシュされたクエリ制限を使用しました。読み取り専用としてシーンで使用され、いくつかの状況を更新したときに、クエリキャッシュを有効にすることを検討。

おすすめ

転載: www.cnblogs.com/ct20150811/p/11277118.html