MySQL(3.23時代)は貧弱なスペックの端末でも動くように、
既定値でメモリを最小限に使う設定になっているようです。
インターネット公開の運用となると、これでは
性能がフルに発揮できていません。
チューニングが必要なわけです。
で、お手軽なチェック項目としては以下の設定を
見直すのが良いかと。
・key_buffer_size
・table_cache
・record_buffer
・thread_cache_size
とりあえず、私の開発環境(メモリ512MB)で試した
設定例が以下です。
〜〜〜〜〜
[mysqld]
#(略)
set-variable=key_buffer_size=256M
set-variable=table_cache=256
set-variable=record_buffer=2M
set-variable=thread_cache_size=10
〜〜〜〜〜
各定義の内容は、以下のとおりです。
・key_buffer_size
→既定値の8Mはかなり少ないです。MySQL ABでは
搭載メモリの1/4を推奨と言っているらしいです。
・table_cache
→この既定値64も、かなり少ないです。
max_connections以上に設定するべきだと思います。
ただし、OSのファイルオープン制限数に気をつける必要が
あるようです。
(確か、Windowsは2048だったっけか?)
[参考:MySQL でのテーブルのオープンとクローズの方法]
http://dev.mysql.com/doc/refman/4.1/ja/table-cache.html
・record_buffer
→前後方あいまい検索のようなインデックスを利用できないタイプの
SQL文を実行する場合、この値をチューニングすることで
速度が改善できるようです。
ちなみに、
key_buffer + (( sort_buffer + record_buffer ) * max_connections)
が必要となるメモリサイズのようです。
この値が搭載メモリ以上にならないように注意が必要。
※ちなみに、MySQL5.0では「read_buffer_size」という名前になってます
・thread_cache_size
→負荷テストをかけて監視したところ、スレッド生成数は数万にも及びました。
スレッドをプーリングすることで、速度改善の見込みがあると予想しています。
(私のテストでは、とりあえず10にしておきました)
以上の設定は、動作に支障がないことは確認済みですが、
パフォーマンスが向上するかどうか、まだ未確認です。
高速化するといいな・・・
【参考文献】
・サーバパラメータのチューニング
(後半に、メモリ設定のチューニング解説があります)
・初歩的なMySQLサーバーのチューニング
・MySQLのチューニング
2006年06月16日
この記事へのコメント
コメントを書く
この記事へのトラックバック
ソフトウェア開発技術者として逝きます (c)てるとみ: [MySQL]メモリ設定のチューニング
Excerpt: かなり具体的に書かれているので参考になります。
Weblog: そぶまさ
Tracked: 2007-07-14 01:06

