MySQL パフォーマンスチューニング
現在実行中の mysqld サーバがある場合は、次のステートメントで変数に実際に使用されている値を調べることができます。
mysql> SHOW VARIABLES;
スロークエリをログに出力する
/etc/my.cnfの[mysqld]セクションに記述
long_query_time=2
log-slow-queries=/var/log/slow.log
設定例
2秒以上処理に時間がかかったクエリは指定したログファイルにクエリを出力する
MySQLのクエリキャッシュを有効にする
/etc/my.cnfの[mysqld]セクションに記述
query_cache_limit=1M
query_cache_min_res_unit=4k
query_cache_size=32M
query_cache_type=1
設定の確認
SHOW STATUS LIKE 'Qcache%'
設定確認時の項目の説明
Qcache_free_blocks:空きメモリブロック数
Qcache_free_memory:空きメモリ。
Qcache_hits:キャッシュにヒットしたクエリ数。
Qcache_inserts:キャッシュに保存したクエリ数。
Qcache_lowmem_prunes:メモリ不足で削除されたクエリ数。
Qcache_not_cached:キャッシュされなかったクエリ数。
Qcache_queries_in_cache:キャッシュに存在するクエリ数。
Qcache_total_blocks:合計ブロック数
クエリキャッシュのヒット率算出
query cache hit 率 = Qcache_hits / ( Qcache_hits + Qcache_inserts + Qcache_not_cached ) * 100
クエリキャッシュの動作
クエリは解析前に比較されるため、
SELECT * FROM table_name
と
Select * from table_name
は、クエリキャッシュで別のクエリとみなされます。完全に一致する(各バイトが)クエリ以外、同一とはみなされません。