LEXUES BLOG

レキサスブログ

MySQLのチューニング

こんばんは。技術統括部の佐藤です。

「DBサーバを負荷分散してみます。」の(その1)から(その3)では、MySQLのコンパイル、
設定、起動、動作確認方法について説明しました。MySQLは、標準の設定のままでは
性能については考慮されていないので、今回はMySQLのチューニングに挑戦したいと思います。

MySQLの場合、設定ファイルでのチューニング以外に、コンパイルの時点でも
性能アップにつながる幾つかのオプションがあります。

MySQLのホームページの以下のページには、バイナリバージョンが作られた際の
コンパイルオプションが明記されています。アーキテクチャ毎のconfigureの
オプションが明記されているので、こちらを参考にして、再度MySQLをコンパイルします。

http://dev.mysql.com/doc/refman/5.0/en/mysql-binaries.html

その中で、今回の環境に該当するのは以下の設定です。

設定を参考に、実際にMySQL clusterをコンパイルすると以下のようになります。

$./configure –prefix=/usr/local/mysql-5.0.37
–with-charset=ujis
–with-extra-charsets=all
–with-unix-socket-path=/usr/local/lib/mysql.sock
–with-ndbcluster
–without-readline
–enable-assembler
–with-client-ldflags=-all-static
–with-mysqld-ldflags=-all-static

コンパイルオプションが長くなり、実際のコンパイルにかかる時間も長くなります(笑)

次は、設定ファイルによるチューニングを行ないます。

設定変更を行なう前に、まずは現状の設定を見てみたいとおもいます。
現在の設定は、プロンプトで、 mysqladmin variables で確認できます。
(230行ほどの出力になりますので、以下はその最初の部分の出力結果となります)。

出力されている内容は、デフォルトの設定となりますので、必ずしも最適な設定とは限らない
のです。 http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html には、
パラメータの変更例が記載されているので、そちらを参考にしたいと思います。

mysqld_safe –key_buffer_size=64M –table_cache=256 –sort_buffer_size=4M –read_buffer_size=1M
を参考にしますが、こちらは起動ファイルとなるので、こちらを参考にmy.cnfを設定変更します。

設定変更を行なうのは以下の4つの項目です。

key_buffer_size=64M (標準は8M)
table_cache=256 (標準は64)
sort_buffer_size=4M (標準は2M)
read_buffer_size=1M (標準は128k)

なおmy.cnfに記載する際は、「 key_buffer_size=64M 」 のように 「 – 」 ハイフンハイフンを
取り除いた形にします。

MySQLはメモリを消費するプログラムなので、設定内容には注意が必要です。
メモリが足りないと、スワップを使ってしまい、レスポンス低下につながりますので、
使用しているサーバのスペックにあった設定にしないといけません。
今回のチューニングは以上となります。

この記事のライター

みなさまからのご連絡をお待ちしております。

CONTACT US