トップページへ
 - いらっしゃいませ♪ -
戻る
ゲストブック
 - 構築方法 -
MySQL 4 について
インストール
ユーザー&グループ
動作確認
セキュリティ設定
ユーザーの作成
ユーザーの管理
チューニング
 - ツール -
phpMyAdmin
MyODBCセットアップ
 - ご紹介♪ -
参考サイト
 - スポンサード リンク -


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

と入力してコピーします。続いて、

# service mysql restart

と入力して MySQL を再起動します。

これだけで設定ファイルが反映され、適切な設定ならばパフォーマンスが数倍に向上します。

しかし、環境によっては細かなチューニングも必要になります。設定によってはパフォーマンスが落ちることがあるからです。その場合はコピーした my.cnf ファイルを編集して調整を行いましょう。

# vi /etc/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

完全結合(インデックスを使用しない場合)のバッファサイズを設定します。インデックスが使用できない場合に有効です。

データベースの使用目的に合わせて設定を変更し、動作確認を行いながらチューニングを行ってみて下さい。

基本的な設定は以上です。


< トップへ >