MySQL はどのようにしてキャッシュを期限切れにするのでしょうか?

MySQL はどのようにしてキャッシュを期限切れにするのでしょうか?

メモリが十分であると仮定すると、

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

関連情報