LoginSignup
24
30

More than 5 years have passed since last update.

MySQL クエリキャッシュ値設定と確認方法

Last updated at Posted at 2017-09-18

phpMyAdmin状態を見るのが良いです。

色々なサイトから情報をいただきました。

キャッシュヒット率(下にも書いています)
hits / (hits + inserts + not_cached) * 100

参考

クエリキャッシュ設定

my.cnf
# クエリキャッシュ最大サイズ(デフォルト1M)
query_cache_limit=1M

# クエリキャッシュで使用するメモリサイズ。
# 一般的なルールとして、FLUSH QUERY CACHE に長い時間がかかるようであれば大きすぎます。
query_cache_size=32M

# クエリキャッシュのタイプ
# (0:off, 1:ON SELECT SQL_NO_CACHE以外, 2:DEMAND SELECT SQL_CACHEのみ)
query_cache_type=1

現在のクエリキャッシュ設定値

mysql> SHOW VARIABLES LIKE '%query_cache%';
+------------------------------+----------+
| Variable_name                | Value    |
+------------------------------+----------+
| have_query_cache             | YES      | --キャッシュクエリを使用可能か
| query_cache_limit            | 1048576  | --クエリキャッシュ最大サイズ(1MB)
| query_cache_size             | 33554432 | --クエリキャッシュ領域。(32MB)
| query_cache_type             | ON       | --クエリをキャッシュする(SELECT SQL_NO_CACHE以外)
| query_cache_wlock_invalidate | OFF      | --書込みロック獲得時に、ロックしたテーブルに関するクエリキャッシュを無効にするか
+------------------------------+----------+
5 rows in set (0.00 sec)

現在のクエリキャッシュの利用状況

クエリキャッシュ
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| Qcache_free_blocks      | 2108       | --空きメモリーブロックの数。起動時は1。1だと良い。それ以上だと断片化しているためFLUSH QUERY CACHEにてキャッシュのデフラグも検討。
| Qcache_free_memory      | 6830336    | --クエリーキャッシュ用の空きメモリーの量
| Qcache_hits             | 3810442057 | --クエリーキャッシュヒットの数。
| Qcache_inserts          | 397612602  | --クエリーキャッシュに追加されるクエリーの数
| Qcache_lowmem_prunes    | 307230686  | --メモリーが少ないためクエリーキャッシュから削除されたクエリーの数
| Qcache_not_cached       | 151054542  | --非キャッシュクエリーの数 (キャッシュできないか、query_cache_type 設定のためキャッシュされない)
| Qcache_queries_in_cache | 8044       | --クエリーキャッシュ内に登録されたクエリーの数
| Qcache_total_blocks     | 26009      | --クエリーキャッシュ内のブロックの合計数
+-------------------------+------------+
8 rows in set (0.00 sec)
キャッシュヒット率
Qcache_hits / (Qcache_hits + Qcache_inserts + Qcache_not_cached) * 100

起動してからこれまでの最大同時接続数 確認

mysql> SHOW STATUS LIKE '%connect%';
+----------------------+------------+
| Variable_name        | Value      |
+----------------------+------------+
| Aborted_connects     | 1          |
| Connections          | 1747049786 |--起動してからの累積接続数
| Max_used_connections | 323        |--起動してからこれまでの最大同時接続数
| Threads_connected    | 1          |--現在の接続数
+----------------------+------------+
4 rows in set (0.00 sec)

table_cache

mysql> SHOW STATUS LIKE 'open%tables';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| Open_tables   | 1024   | --table_cache値で指定した分キャッシュされる。
| Opened_tables | 489028 |
+---------------+--------+
2 rows in set (0.00 sec)
mysql> flush tables;
Query OK, 0 rows affected (0.00 sec)

mysql> show open tables;
Empty set (0.00 sec)
24
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
30