|
MySQLのチューニング
更新日:2005/12/14
MySQLは初期設定ですと、メモリの割り当て等の環境設定が何もされていません。そこでサンプルで用意されているファイルを使って、MySQLをチューニングしてみましょう。
サンプルのファイルは、
[ /usr/share/mysql ]
にあります。このディレクトリにある以下のファイルがサンプルです。
my-small.cnf
my-medium.cnf
my-large.cnf
my-huge.cnf
my-innodb-heavy-4G.cnf |
このファイルを目的に合わせて、
[ /etc/my.cnf ]
として保存します。そして MySQL を再起動すれば、設定が反映されます。
それぞれのファイルは、
|
ファイル名
|
使用用途
|
|
my-small.cnf
|
64MB以下のメモリを搭載したPC |
|
my-medium.cnf
|
128MB以下のメモリを搭載したPC |
|
my-large.cnf
|
512MB以下のメモリを搭載したPC |
|
my-huge.cnf
|
1GB〜2GB以下のメモリを搭載したPC |
|
my-innodb-heavy-4G.cnf
|
4GBのメモリとInnoDBで作成されたデータベースによって構築されたPC |
といった内容になります。上記はMySQLをメインに使う場合の設定ですので、他のサービスと併用する場合は、1ランク下の設定が良いでしょう。
例えば、my-small.cnf
を使用する場合は、コマンドライン端末から
| # cp /usr/share/mysql/my-small.cnf /etc/my.cnf |
と入力してコピーします。続いて、
と入力して MySQL を再起動します。
これだけで設定ファイルが反映され、適切な設定ならばパフォーマンスが数倍に向上します。
しかし、環境によっては細かなチューニングも必要になります。設定によってはパフォーマンスが落ちることがあるからです。その場合はコピーした
my.cnf ファイルを編集して調整を行いましょう。
と入力すると、
# Example MySQL config file for large systems.
#
# This is for a large system with memory = 512M where the system runs mainly
# MySQL.
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/lib/mysql) or
# ~/.my.cnf to set user-specific options.
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking |
といった内容が表示されます。主なパラメータは以下のようになっています。
|
パラメータ名
|
設定内容
|
|
port = 3306
|
起動ポート番号です。セキュリティ面から変更しておいた方がよい場合も…。 |
|
key_buffer = 256M
|
検索に使われるインデックスをバッファに保存する際のメモリサイズを設定します。メモリに余裕がある場合はより沢山指定しましょう。 |
|
max_allowed_packet = 1M
|
入力データ保持の最大バッファサイズを設定します。画像などの大きなデータを挿入する場合は、この制限に引っ掛かる可能性がありますので気をつけて下さい。 |
|
table_cache = 256
|
頻繁なアクセスに対して使うデータキャッシュを設定します。これによってディスクのI/O負荷を減らすことができます。 |
|
sort_buffer_size = 1M
|
並べ替えのバッファサイズを設定します。値を大きくすることで ORDER BY
や GROUP BY
といった並べ替えクエリーの速度を上げることができます。 |
|
read_buffer_size = 1M
|
読み込みのバッファサイズを設定します。値を大きくすることでインデックスを含まないクエリーの実行速度を上げることができます。 |
|
myisam_sort_buffer_size = 64M
|
MyISAMで使用する並べ替えのバッファサイズを設定します。 |
|
thread_cache = 8
|
スレッド生成のキャッシュサイズを設定します。クライアントからの接続を受けると、スレッドが生成され、そのスレッドがクライアントのSQL分を処理します。クライアントの接続が多い場合に有効です。 |
|
query_cache_size= 16M
|
クエリのキャッシュサイズを設定します。同じクエリを何度も実行する場合に有効です。 |
|
thread_concurrency = 8
|
同時に実行するスレッド数を指定します。 |
|
join_buffer_size = 131072
|
完全結合(インデックスを使用しない場合)のバッファサイズを設定します。インデックスが使用できない場合に有効です。 |
データベースの使用目的に合わせて設定を変更し、動作確認を行いながらチューニングを行ってみて下さい。
基本的な設定は以上です。
|