あらかじめインデックスカラムでソートしておくことによるINSERT速度の差に関する調査(2)

前回のあらすじ

  • 2カラムを持ち、1カラム目だけにインデックス(プライマリーキー)を作成したテーブルに対して、予め1カラム目の値でソートしたINSERT文群と、ソートしていないINSERT文群を与えて、処理に要する時間を測定した。
  • INSERT文群の件数は 1万、2万、5万、10万、50万、約58万 を測定。
  • ソートしていなかったものが 10万から50万の間で大きく時間を要するようになった(ソートしてあるものはそれほどでもない)
  • とりあえず 10万から50万の間がどうなっているのかをもう少し細かく見たいので、20,30,40万について測定を行いたくなった
  • 前回のグラフは以下。

今回の結果

  • 以下のとおりとなった。20万, 30万, 40万件について追試を行い、10万と50万については前回の測定値を使用した。

感想

  • やっぱりまっとうに(なめらかに)所要時間が増え続けていますね、ソートしていないものは。
  • なんでだろう。インデックスを作成する、という内部処理の中で、何がおこっているのだろう。インデックスを作っている担当者の気持ちになって考えてみたい。

追記(2008/09/09 23:00)

 上記レポートに明記していませんでしたが、今回は MyISAM ストレージエンジンを使用して測定を行いました。
 ・・・・白状します。。。私自身もずっと InnoDB でやっているつもりになっていました(^^;)。 事前のリハ等で、CREATE TABLE をきれいにした際に ENGINE 記述が抜けちゃったのかな。 ということで上記【MyISAM】です!ということを改めて強調しておきます!
 いまInnoDBでデータとりなおしています〜。