スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに

MySQLクエリキャッシュとは、SELECTステートメントのテキストを結果と合わせ格納します。 後で同じクエリを受け取ったときに、クエリの解析と実行をせずに、 クエリキャッシュから結果を取り出し、クライアントに返します。 同じクエリが何度も実行される環境では、クエリキャッシュが役に立ち、パフォーマンスが向上します。

クエリキャッシュの設定が 0 の場合

query_cache_size が 0 の場合は、 クエリキャッシュを無効になります。
query_cache_size=0

クエリキャッシュの設定の確認方法

クエリキャッシュの確かめ方を説明します。
mysql> show variables like 'query_cache_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| query_cache_size | 0     |
+------------------+-------+
1 row in set (0.01 sec)

サーバのシステム変数 have_query_cacheは、クエリキャッシュを利用可能にします。
mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

キャッシュサイズの設定

クエリキャッシュサイズを設定するには、以下の設定を行います。
mysql> SET GLOBAL query_cache_size = 41984;

キャッシュのステータス


クエリキャッシュのステータス情報を見る方法を紹介します。

まず、現在のステータスを見てみましょう。
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Qcache_free_blocks      | 1     |
| Qcache_free_memory      | 33496 |
| Qcache_hits             | 0     |
| Qcache_inserts          | 0     |
| Qcache_lowmem_prunes    | 0     |
| Qcache_not_cached       | 0     |
| Qcache_queries_in_cache | 0     |
| Qcache_total_blocks     | 1     |
+-------------------------+-------+
8 rows in set (0.01 sec)

この状態で、2回同じSQLを発行し、ステータスをもう一度見てみます。 Qcache_inserts が 1 になり、Qcache_hits も 1 になっています。 cacheに1つ格納され、1回キャッシュがヒットしたことを意味します。

mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Qcache_free_blocks      | 1     |
| Qcache_free_memory      | 31960 |
| Qcache_hits             | 1     |
| Qcache_inserts          | 1     |
| Qcache_lowmem_prunes    | 0     |
| Qcache_not_cached       | 0     |
| Qcache_queries_in_cache | 1     |
| Qcache_total_blocks     | 4     |
+-------------------------+-------+
8 rows in set (0.01 sec)

例えば、下記のクエリと

select * from table_name;

一文字大文字にした下記のクエリは

Select * from table_name;

違うものと識別されます。
よって、同じ意味のクエリですが、キャッシュが効きません。

my.cnfでの設定

クエリキャッシュのサイズは、MySQLの設定ファイル
my.cnfでもできます。

sudo vim /etc/my.cnf

query_cache_size = 32M
と追加した後に、mysqldを再起動し、設定を反映します。
sudo /usr/local/etc/rc.d/mysql-server restart

クエリキャッシュでのSELECTのオプション


クエリ結果をキャッシュする
select SQL_CACHE * from table_name

クエリ結果をキャッシュしない
select SQL_NO_CACHE * from table_name

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

はてなの人気のブックマーク

スポンサーリンク
 

過去ログ

2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー