MySQLのセッション単位に設定する各種バッファーサイズについてです。
下記の設定パラメータは、いずれも各クライアントのセッション単位の設定値で、max_connectionsの設定値が高く、接続数が多い場合は、メモリ使用量が大きくなるので注意します。
グローバルに高い値を設定せず、接続後にSET SESSIONでセッション単位に設定することを検討します。
●sort_buffer_size
・各セッションのソート用(ORDER BY、GROUP BY)のバッファサイズ。
・ストレージエンジン固有のバッファサイズではない。
・このサイズを超えるソートはディスクを使用する。
●read_buffer_size
・MyISAMテーブルをシーケンシャルスキャンする各スレッドに対し、スキャンするテーブル毎に割り当てるバッファサイズ。
・ORDER BYでソートするときに一時ファイルにインデックスをキャッシュする際にも使用する。
・ネストされたクエリの結果をキャッシュするのに使用する。
●read_rnd_buffer_size
・MyISAMテーブルから行をソート順にリードする際、ディスクシークを避けるためにこのバッファを通してリードされる。この値を大きくするとORDER BY句の性能を向上できる。
●join_buffer_size
・インデックススキャン、rangeインデックススキャン、インデックスを使用しないjoin、フルテーブルスキャンに使用されるバッファーサイズ。
・二つのテーブルをjoinする毎に一つのjoinバッファーが割り当てられる。
複数のテーブル間の複雑なjoinの場合は、複数のjoinバッファーが必要になる。