MySQL5.5のcreate temporary tableが激烈遅い

ひどい目にあったので書く。

ストアドプロシージャベースで構築されたWEBシステムを、MySQL5.5に載せて運用を始めたところ、本稼働後数時間でデータベースのレスポンスが激烈に悪くなった。

別に破綻するほどアクセスが殺到した訳でもなく、サーバーのスペックが悪いわけでもなく、スロークエリのログにはストアド名がでるけど肝心の内部のクエリまでは見えない。

困ってプロセスリストをのぞくとcreate temporary tableがいっぱい詰まってるのが観測された。
一時テーブルをもっと多用した別のシステムでもこんな状況は見たことがない、ってことでどうもMySQL5.5の問題なのかもと推測。一時テーブルの設定(tmp_table_sizeなど)を変更してみたり、いろいろチューニングを試みるけど効果なし。

で、特に公式サイトとかに必要な設定とか注意点の情報も無く、ぐぐっても対処法が見あたらなかった(2ちゃんに1件だけ同じ事例があった)ので、やむを得ずMySQL5.1にダウングレードしたら嘘のように収束した。

バージョンはMySQL5.5.13、ダウングレード先はMySQL5.1.58。
MySQL5.5はいろいろすごくなってるんだよね? 一時テーブルだけひどくなるとか無いよね。。。
きっと設定があるはず。
もしくは将来直るはず。
頼むよ。



2013/8/15 追記
どうやら、MySQL5.5からデフォルトのストレージエンジンがInnoDBになったためらしい。
create tamporary table時に従来のMyISAMを明示的に指定してあげたら改善した模様。