にわかサーバー屋さんの覚書

サーバー系を担当しているけど、設計などは日々勉強中のプログラマの覚書

MySQL - スレッド毎のバッファ調整

前回は、コネクションとスレッドの調整を書いたけど、

おまけで、スレッド毎のバッファの調整も聞いたのでメモ。

my.conf

sort_buffer_size

ORDER BYやGROUP BYのときに使われるメモリ上の領域らしい。

ソートするカラムに対して、インデックスがついていない場合に利用される。

ソート用のメモリを超える場合、ディスクを使用。

 

 

この値を調整する際に、指針とする値が、

Sort_merge_Passes

 上記の値は、テンポラリファイルを利用したソートの回数(マージソートのパス数)を表示。

つまり、メモリでは収まっていないと言うこと。

 

Sort_merge_Passesの確認方法

show global status like 'Sort_merge_passes';

+-------------------+-------+

| Variable_name     | Value |

+-------------------+-------+

| Sort_merge_passes | 0     |

+-------------------+-------+ 

 ゼロが望ましいそうです。

 

ただ、こちらの値はデフォルト2Mで、特に問題が起きたことは無いそうです。

調子に乗って、大きすぎると、メモリの割り当てのオーバーヘッドになるので注意。

 

まぁ、使うケースとしては、集計などのバッチ処理を行う場合に、

事前に調整しておいて実行して、終わったら戻すといった感じで使うのがいいみたい。