MySQLのチューニング その5

投稿者: | 2013年1月4日

MySQLのパフォーマンスチューニングに必要そうなパラメーターの解説の続き、本を読みなおして要約するのって難しい・・・

tmp_table_size
メモリー上に作成する、一時テーブルのサイズを指定するパラメーターです。ここで指定した値を超過するとディスク上に一時テーブル(MyIASM)を作成してしまうので、ディスク書き込みが発ししない程度の大きさの値を割り当てる必要がある。

SHOW STATUSコマンドを実行して表示される下記のパラメーターを参考にして設定を詰めるのが良い。

Created_tmp_tables(一時テーブルが作られた回数)
Created_tmp_disk_tables(一時テーブルがディスクに書き込まれた回数)

max_heap_table_size
一時テーブルはヒープテーブルとして作成されるらしいので、tmp_table_sizeと同じサイズにする必要がある。

table_definition_cache
テーブルの定義のキャッシュ、テーブル数が多い場合にテーブルの読み込みスピードを上げることができる。

現在の、MySQLのキャッシュを管理するアルゴリズムでは、10,000を超える値を設定すると性能が落ちるらしいのでそれを超えないように設定をする。

table_open_cache
テーブルを開く際に使われるキャッシュ。セッションごとに使用され、ファイルディスクリプターを使用するので合わせてopen_files_limitパラメーターの値も増やしておく必要がある。

現在の、MySQLのキャッシュを管理するアルゴリズムでは、10,000を超える値を設定すると性能が落ちるらしいのでそれを超えないように設定をする。

max_connections
MySQLの受け付ける最大コネクション数です。大量の同時コネクションがある場合には、OSのファイルディスクリプタとプロセス数の制限に引っかかる可能性があるので次の方法でOS側の制限を緩和する。

ファイルディスクリプタの設定

thread_cache_size
スレッド生成の負荷を下げるためにスレッドをあらかじめ生成して待機させておくための設定です。一度にあまりたくさんの待機スレッドを作っておいても役に立たないので、250ぐらいを上限として設定をする。

back_log
MySQLが保持することの処理待ちの接続要求の数です。めちゃくちゃ接続が多いとき増やすと効果があるかもしれない。

open_files_limit
MySQLの使用可能なファイルディスクリプターの数を指定するパラメーターです。サーバーのスペックが十分にあるなら最大値の65535を設定しておけばよいともう。

innodb_thread_concurrency
InnoDBが同時に処理することのできるスレッド数の上限を指定するパラメーターです。

下記の式で求められる値が、最適値だといわれている。

innodb_thread_concurrency = CPU数 * ディスク数 * 2

innodb_buffer_pool_instances
innodb_buffer_poolを複数のセグメントに分割するためのパラメーターです。マルチコアCPUを持つサーバーでの性能向上に役に立つらしい。現時点では、8ぐらいの値が一番性能が出るらしい。

innodb_buffer_pool_size
InnoDBのインデックスやテーブルのデーターやInnoDBの内部情報を保持するためのバッファーです。性能に大きな影響を与えるので十分な量のメモリを割り当てる必要がある。DB専用に使用するサーバーなら搭載メモリの50%~70%ぐらいの量を割り当ててしまってよいと思う。

MySQLのチューニング その4
MySQLのチューニング その6


コメントを残す

メールアドレスが公開されることはありません。

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください