mysqlキャッシュ設定

centos7

一般的に閲覧の方が圧倒的に多いサイト(WPの記事サイトなど)はキャッシュが有効であると言われています。WPで言えばアプリケーションのレベルではプラグインがあり、Webサーバ(nginx)で言えばproxy_cacheなどがあり、DBで言うと今回のquery_cacheなどがあります。ただし、キャッシュすると不具合が起こるようなサイトもあるので、サービスの要件に沿って利用するのがベストです。

全文検索などをフルテキストインデックスで行っているような場合は劇的に速くなるような場合もありますが、各環境の条件(主にメモリ)やデータの傾向(1レコードが大きいデータ、そうでないデータ)にもよるので、これが正解というのではなく、各状況に応じて値は調整する必要があります。

以下は、その例として示します。

フルテキスト検索以外のキャッシュについての設定は以下。my.cnfの設定を変更する例です。具体的な上限値、下限値を知りたい場合はmysql本家にて。

[mysqld]
...
# 0:キャッシュしない
# 1:SELECT SQL_NO_CACHE で始まるものを除くキャッシュ可能なすべてのクエリー結果をキャッシュ
# 2:SELECT SQL_CACHE で始まるキャッシュ可能なクエリーのみ結果をキャッシュ
query_cache_type=1

# キャッシュ1件当たりの最大容量
query_cache_limit=8000000

# キャッシュデータを保持する領域の容量
query_cache_size=256000000

フルテキスト関連のキャッシュは以下。データの大きさによって値を調整するのをお勧めでします。上限値・下限値など詳細はmysql本家にて。query_cacheのページとは本家の説明ページが異なるので注意。

[mysqld]
...
# フルテキストキャッシュ1件当たりの最大値
innodb_ft_cache_size=8000000

# フルテキスト用キャッシュ領域の容量
innodb_ft_total_cache_size=640000000

設定を変更した場合は再起動します。

# service mysqld restart

mysqlへログインし、設定値を確認します。

mysql> show variables like '%cache%';
(いろいろでるので抜粋です)
+--------------------------------+----------------------+
| Variable_name                  | Value                |
+--------------------------------+----------------------+
| innodb_ft_cache_size           | 8000000              |
| innodb_ft_total_cache_size     | 640000000            |
| query_cache_limit              | 8000000              |
| query_cache_size               | 256000000            |
| query_cache_type               | ON                   |
+--------------------------------+----------------------+

各自の環境に合わせて調整して最適化していかなければならないのでチューニングのポイントですね。

コメント

タイトルとURLをコピーしました