
メモリが十分であると仮定すると、
MySQL はキャッシュから取得するか、再クエリするかをどのように決定しますか?
答え1
私の知る限り、mysql はテーブルが変更されると(挿入、更新、削除など)、キャッシュを自動的に期限切れにします。
mysql は通常、query_cache_limit とサイズに基づいてすぐにキャッシュします。デフォルトの query_cache_limit は 1M なので、個々のクエリがそれより大きくなると、変更しない限りキャッシュされません。
大文字と小文字を区別するクエリを考慮するため、クエリが iquals であることも確認する必要があります。
それ以外にも、次のコマンドを使用して監視できます。
SHOW STATUS LIKE '%qcache%';
たとえば、いくつかのエントリを含むテーブルを作成し、次のコマンドを実行します。
SELECT id,name FROM my_table WHERE id > '2'; SHOW STATUS LIKE '%qcache%';
キャッシュされたクエリの数が 1 つ増加したことに気づくでしょう。ここで同じ選択を再度実行すると、mysql がすでにキャッシュを使用しており、結果が大幅に高速化されていることがわかります。
追加情報
query-cache-type = 1
まず、OS/インストールに応じて、my.cnf または my.ini が存在することを確認する必要があります。
mysql から次のコマンドを実行して、そのステータスを確認できます。
SHOW VARIABLES LIKE '%query_cache%';
データを一覧表示すると、クエリ キャッシュ サイズが表示されます。これが 0 に設定されている場合、クエリ キャッシュが無効になっていることを意味します。この変数は、クエリ キャッシュに使用されるメモリ (バイト単位) を決定します。
したがって、query-cache-type の場合と同様に、my.cnf または my.ini に次のコードを追加します。
query-cache-size = 40M