MySQLのチューニング その3

投稿者: | 2012年12月22日

本の内容をもとに作成した、MySQLの設定ファイル「my.cnf」のパラメーターのうちパフォーマンスチューニングに重要そうなパラメーターの解説を書いてみる。

server-id
レプリケーションをする時に必要なパラメーター何も設定をしない場合には、1が設定される。レプリケーションを使用するときは、重複しない一意な値を指定する必要がある。たとえばIPアドレスの第4オクテットの値などを指定するなどして重複しないようにする。

skip-name-resolve
クライアントからMySQLに接続の認証の際に、ホストネームの検証をするのを停止する。DNSの名前解決の時間分だけクライアントが待たされてしまうので、通常は無効にする。無効にすると、ホストネームで認証をしているMySQLのアカウントが使用できなくなる。

key_buffer_size
InnoDBしか使用しない場合でも、MySQLは一時テーブルなどの内部処理でMyIASMを使用しているのであまり大きな値を指定する必要はないが設定をする必要がある。

myisam_sort_buffer_size
MyIASMを使用時に、Repair Tableを使用時に使用されるバッファー、Repair Tableを使用しないならば、デフォルトの値でも大丈夫だと思われる。

myisam_recover
MyIASMのテーブルが壊れたときのリカバリーのオプション、FORCE,BACKUPの設定が推奨されている。動作は、テーブルが破損しているときに強制的に復元を行い、テーブルのバックアップを、拡張子が.BAKのファイルに保存する。

max_allowed_packet
サーバーが、大きすぎるパケット送り付けられるのを防ぐための設定です。標準の設定では、小さすぎてレプリケーションなどで不都合が発生する場合があるので、少し大きな値を設定する必要がある。16MB~64MBぐらいの間で設定しておけばよいのではないかと思います。

max_connect_errors
クライアントがMySQLに接続するときに、大量のエラーが一定の期間内に発生すると、ホストがブラックリスト入りしてホストキャッシュがフラッシュされるまで接続をすることができなくなってしまう問題を回避するための設定です。標準の設定だと値が小さすぎて問題が発生しやすいので大きめの値を設定する。

expire_logs_days
何も設定しないとバイナリーログのファイルが延々とたまって行ってしまい、ディスク容量を圧迫していしまうので適当な間隔で古いバイナリーログを消していく設定。expire_logs_daysに、日数を指定しておくと指定された日数を過ぎたバイナリーログは自動的に削除される。

sync_binlog
MySQLがバイナリーログを、どのようなタイミングでディスクに書き込むかを指定するパラメータです。0に設定するとMySQLは、バイナリーログをいつディスクに書き込むかを決めずOSが書き込みを決めたタイミングでディスクに書き込みをする。

0以上の値に設定をすると何回のトランザクションごとにバイナリーログをディスクに書き込むかの設定になる。

1以外の設定にすると、バイナリーログの破損がしやすくなり、レプリケーションやタイムポイントリカバリーに問題が発生する可能性が増すので、1以外の値を設定をするべきではない。

次回へ続く・・・

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


コメントを残す

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

*

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