エントリー

※注意:このエントリーは、旧日記「Mio's Blog」からデータを移管したものです。

自宅鯖で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 し、かなり高速化したことが伺えます。

 

とりあえず、このくらいのチューニングでしばらく様子を見ようと思います。まだ重いと感じたら、またチューニングできる箇所を探さなきゃです。

ページ移動

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前 *
URL
コメント *
閲覧制限 *
【スパム対策】 2 × 2 × 2 = ? (半角数字で)

ユーティリティ

user profile

calendar

102024/1112
S M T W T F S
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

tag cloud