MySQLTunerはMySQLを診断して、いろいろアドバイスしてくれるプログラム。perlスクリプトで提供されているので、簡単に実行できる。なおWindowsでは動かないらしい。
ダウンロードして実行する。
以下のようなエラーが出た。
–forcememと–forceswapを指定して再実行。
いっぱい出てきたが[!!]で始まっているのはやばいやつみたい。そして最後のRecommendationsにお奨めの直し方が書いてあると思われる。
最初のやつは[Run OPTIMIZE TABLE to defragment tables for better performance]なのでテーブルを最適化してデフラグしろってことらしい。検索してみたところこのサイトが見つかった。以下のコマンドを実行すればよいらしい。ただしmysqlが動いている状態じゃないとだめとのこと。このサイトでは一時的にhttpdを止めることを推奨している。
これを実行後、再びmysqltunerを実行したところ、また同じRecommendationsが出たがmysqlを再起動後実行したら消えた。
次は[Reduce your overall MySQL memory footprint for system stability]だがメモリの使用量を減らせということだろうか?これはスルー。
次は[Enable the slow query log to troubleshoot bad queries]、まずいクエリーのログためにスロークエリログを有効に、ということらしい。スロークエリログとは、long_query_timeよりも時間がかかったクエリーのことらしい、これをログに取っておけばいろいろ調べられるということか。
これを有効にするにはmysqldの起動オプションに–log-slow-queries[=file_name]を加えるらしい。または以下の記述をmy.cnfに加えてもいいみたいだ。ここでは後者を採用。
これを記述後mysqlをリスタートし、/var/lib/mysql/log-slow-queries.logができていることを確認した。そのご再び、mysqltunerを実行してRecommendationsが消えたことを確認。
次が[Set thread_cache_size to 4 as a starting value]、スレッドキャッシュとはプールしておくスレッドの数のようだ。
my.confにthread_cache_size=4を記述して終了。
あとのRecommendationsはSQLを発行する側の問題だと思うので、これで終了。
次に[Variables to adjust]で以下の指摘がなされている。
query_cache_size (>= 8M)
tmp_table_size (> 32M)
max_heap_table_size (> 16M)
my.cnfに以下のように書いた。
query_cache_size=8M
tmp_table_size=32M
max_heap_table_size=16M
query_cache_sizeはその名のとおりクエリの結果をキャッシュしておくものだと思うが、これを付けたら速くなった気がする。このwordpressの一番下のHTML convert timeがリロードしたとき速くなった。
結局[!!]で始まるものは[!!] Maximum possible memory usage: 310.7M (121% of installed RAM)]以外消せたのでよしとしよう。