2006年06月16日

[MySQL]メモリ設定のチューニング

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のチューニング


posted by てるとみ at 01:12| Comment(0) | TrackBack(1) | MySQL | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

ソフトウェア開発技術者として逝きます (c)てるとみ: [MySQL]メモリ設定のチューニング
Excerpt: かなり具体的に書かれているので参考になります。
Weblog: そぶまさ
Tracked: 2007-07-14 01:06
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。