- 2010/03/2900:00
自宅鯖でPHP+MySQLがやたらモサモサすると思っていたら、そういや自宅鯖のデータベース鯖を一度も高速化していませんでした。ということで、MySQLのチューニングアップ初体験です。
ちなみに環境は、OSがFreeBSD 8.0-RELEASEで、DBMSがMySQL 5.0.xです。
各種キャッシュサイズを増加
/usr/local/etc/my.cnf
で、各種キャッシュサイズを大幅に増加させて、メモリをたくさん使ってもらうようにして、高速化を図りました。
query_cacheを有効化
XOOPSやMovableTypeやWordPressなどなど、重量級ウェブアプリを沢山置いていると、重たいSQLクエリが溜まりに溜まって、モサモサでした。
この query_cache
を有効にすることで、今までに投げられたクエリがキャッシュされて、それらのキャッシュにヒットすれば0.0 secでクエリのリザルトが帰ってきて、(゜Д゜)ウマーな感じになりました。かなり効果が高いです。
query_cacheのON/OFFを確認する
MySQLにログインして、以下のコマンドで確認できます。 query_cache_size
が 0 だと無効で、1 以上の数字が入っていれば、有効になっています。
mysql> SHOW VARIABLES LIKE 'query_cache_%e'; +------------------------------+----------+ | Variable_name | Value | +------------------------------+----------+ | query_cache_size | 33554432 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | +------------------------------+----------+ 3 rows in set (0.00 sec)
query_cacheを有効化する
/usr/local/etc/my.cnf
に以下の1行を付けたし、「/usr/local/etc/rc.d/mysql-server restart
」コマンドで query_cache
が有効となります。
query_cache_size = 任意のサイズ ; ex.) query_cache_size = 32M
キャッシュされたクエリのサイズを確認する
次のコマンドでキャッシュ状況が確認できます。
mysql> SHOW STATUS LIKE 'Qcache%';
muninを入れていると、左図のようにキャッシュ状況が確認できます。
青色の部分が空きメモリ量、緑色の部分が使用メモリ量です。
query_cache
有効後、実際のところクエリがどの程度 cache_hit
しているか確認する
muninを入れていると、右図のように、MySQLに投げられたクエリの種類とその量を確認できます。
緑色が「select
」したクエリ、青色が「delete
」したクエリ、赤色が「update
」したクエリ、水色が「insert
」したクエリ、桃色が「cache_hits
」したクエリ、黄色が「replace
」したクエリ、を表しています。
Mon 00:00の1時間前に query_cache
を有効にしたのですが、非常に多くのクエリが cache_hit
し、かなり高速化したことが伺えます。
とりあえず、このくらいのチューニングでしばらく様子を見ようと思います。まだ重いと感じたら、またチューニングできる箇所を探さなきゃです。
- 2010/03/29 00:00
- 旧日記のアーカイブ
- Permalink
- nmio
- Comment(0)
comment