MySQL - クエリ結果のキャッシュで高速化!

Updated:


WordPressなどで使用しているデータベース「MySQL」はデフォルトではクエリ結果のキャッシュを行っていません。 クエリ結果をキャッシュしてやることで高速化が期待できます。

こちらを参考

作業記録

(今回ははCentOSでの作業ですが、Windowsでも同様です)

1.クエリ結果キャッシュの有効・無効確認

MySQLサーバーへrootユーザでログインし、以下のように確認する。

mysql> show variables like 'query_cache_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| query_cache_size | 0     | ← 無効(0M)になっている
+------------------+-------+
1 rows in set (0.00 sec)

2.「my.cnf」の設定

MySQL設定ファイル「my.cnf」の[mysqld]の項に以下のように記載を追加する。

# vi /etc/my.cnf
[mysqld]
query_cache_limit=1M        ← キャッシュしたそれぞれのクエリ結果の最大サイズ(Bytes)
query_cache_min_res_unit=4k ← クエリキャッシュのブロックサイズ(Bytes)
query_cache_size=24M        ← クエリキャッシュのサイズを最低 40 KB でセット(Bytes)
query_cache_type=1          ← 0:OFF 1:ON 2:DEMAND

3.MySQLサーバの再起動

# /etc/rc.d/init.d/mysqld restart
MySQL を停止中:                                            [  OK  ]
MySQL を起動中:                                            [  OK  ]

4.クエリ結果キャッシュの有効・無効確認

設定が反映されているかMySQLサーバーへrootユーザでログインし、以下のように確認する。

mysql> show variables like 'query_cache_%';
+------------------------------+----------+
| Variable_name                | Value    |
+------------------------------+----------+
| query_cache_limit            | 1048576  |
| query_cache_min_res_unit     | 4096     |
| query_cache_size             | 25165824 | ← 有効(24M)になっている
| query_cache_type             | ON       |
| query_cache_wlock_invalidate | OFF      |
+------------------------------+----------+
5 rows in set (0.00 sec)

5.キャッシュ状態の確認

MySQLサーバーで以下のように確認する。

mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 1        | ← クエリキャッシュ内の空きメモリブロックの数
| Qcache_free_memory      | 24728584 | ← クエリキャッシュ内の空きメモリ ブロック量
| Qcache_hits             | 86       | ← クエリキャッシュヒットの数
| Qcache_inserts          | 103      | ← キャッシュに追加したクエリ数
| Qcache_lowmem_prunes    | 0        | ← メモリ不足を解消するためにクエリキャッシュから削除されたクエリの数
| Qcache_not_cached       | 19       | ← キャッシュしないクエリの数
| Qcache_queries_in_cache | 74       | ← クエリキャッシュに登録したクエリ数
| Qcache_total_blocks     | 163      | ← クエリキャッシュの合計ブロック数
+-------------------------+----------+
8 rows in set (0.00 sec)

作業は以上です。

若干速くなったように感じます。

もう少し様子を見てみます。

ではまた。





 

Sponsored Link

 

Comments