2007.11.03 Sat

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

は、クエリキャッシュで別のクエリとみなされます。完全に一致する(各バイトが)クエリ以外、同一とはみなされません。

参考サイト

システム構築に関する覚書トップページへ