MySQL > チューニング

更新日 2014-12-06
広告
サーバのスペックに合わせてMySQLをチューニングすることで、性能を向上できます。 以下、MySQLの設定ファイルにおいて重要なパラメータを示します。

max_connections

MySQLに同時に接続できる数の上限値です。

max_allowed_packet

MySQLが受理するクエリの最大サイズになります。 この値を超えるサイズのリクエストは、拒否します。

例えば、JavaプログラムからJDBC経由でINSERTしようとすると、以下のエラーが発生する場合があります。 これは、INSERTしようとしているデータサイズがmax_allowed_packetで指定されているサイズを超えている場合に発生します。

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (6055590 > 2097152).
You can change this value on the server by setting the max_allowed_packet' variable.

thread_cache_size

スレッドをキャッシュする数です。 MySQLは、接続済みのコネクションにスレッドを割り当てます。 コネクション切断後に、スレッドを解放せずにキャッシュすることで、次のコネクションを素早く処理できます。 Oracleのドキュメントによれば、(max_connections / 3) あたりの値を設定するとよいそうです。

query_cache_type

クエリキャッシュの有効・無効を設定します。 0を設定すると、クエリキャッシュを使用しません。 デフォルトは'1'で、クエリキャッシュを使用します。 更新が多い場合は、無効にしてもよいです。 なぜなら、更新が発生すると、クエリキャッシュは使用されないからです。

query_cache_limit

キャッシュ可能なクエリサイズの上限値です。 この値を超えるクエリは、キャッシュしません。

query_cache_size

クエリをキャッシュするためのメモリサイズです。 Oracleのドキュメントによれば、32MB程度で問題ないそうです。

sort_buffer_size

データをソートする際に使用するメモリサイズです。 この値を超えるデータをソートする場合は、ディスクを使用します。

innodb_buffer_pool_size

innoDB用の設定です。 データとインデックスをキャッシュするメモリサイズです。 Oracleのドキュメントによれば、メインメモリの80%程度を割り当てるとよいそうです。

innodb_log_file_size

innoDB用の設定です。 ログファイルのサイズです。 ログファイルのサイズが、この値に達すると、チェックポイント処理が実行されます。 チェックポイント時は性能が低下するので、チェックポイントが頻発するようであれば、ログファイルのサイズを大きくするとよいかもしれません。 一方で、ログファイルのサイズを大きくするほど、リカバリの時間が長くなります。 Oracleのドキュメントによれば、innodb_buffer_pool_sizeの25%から100%くらいを設定するとよいそうです。

innodb_log_files_in_group

innoDB用の設定です。 ログファイルの数です。 MySQL 5.5では、ログファイルのサイズの合計(innodb_log_file_size * innodb_log_files_in_group)は、最大4GBまでという制限があるそうです。

innodb_flush_log_at_trx_commit

innoDB用の設定です。 コミット時の一貫性レベルを指定します。 1を設定すると、コミット時に、ログをディスクにフラッシュする。一番時間がかかりますが、データの一貫性を保てます。 2を設定すると、コミット時に、ログをファイルシステム上のバッファに書き込むだけになります。1を設定するよりも処理が速くなりますが、データの一貫性保証が弱くなります。

innodb_write_io_threads

innoDB用の設定です。 書き込みディスクIOを処理するスレッド数。デフォルトは4です。

innodb_io_capacity

innoDB用の設定です。 ダーティページのフラッシュなどのバックグラウンド処理に対する、ディスクI/Oの上限値です。デフォルト値は200です。

innodb_flush_method

innoDB用の設定です。 ディスクに書き込む際の方法を指定します。 Oracleのドキュメントによれば、O_DIRECTを指定するとよいそうです。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system