Falcon と InnoDB の違い

Falcon という新しいストレージエンジンが MYCOMジャーナル で紹介されていました。
その中でいいなぁと思った箇所を抜粋させてもらいます。
リサーチされた方々ありがとうございます。


Falcon は、InnoDBMyISAMと同じ領域のユーザを対象としており、トランザクション等をサポートしている点から InnoDB or Falcon という選択肢になります。


ディスクI/Oを減らすことを主眼としており、InnoDBと比較して、問い合わせ/更新性能UPが実現できるようです。
また、インデックスの扱いが異なる点が気になりました。


まずはディスクI/Oについて
データファイルへの書き込みの違いから、ロールバック時のディスクI/Oが少ないそうです。
また、ランダムI/O時のディスクI/Oが非常に少ないそうで、問い合わせ性能向上に期待が持てますね。


次にインデックスの扱いについて
InnoDBでは、プライマリーインデックスを走査することでデータを特定するため、セカンダリインデックスを利用して問い合わせを行うと、内部でプライマリーインデックスに問い合わせています。
つまり セカンダリー => プライマリー と2回問い合わせをしています。
その分プライマリーキーを利用した問い合わせは非常に高速です。
それに対して Falcon では、プライマリー/セカンダリー とインデックスを分けないため、InnoDBセカンダリーインデックスを使用した問い合わせと比べて高性能を期待できます。


最後に2点、データ型とauto_incrementの挙動について。
Falconでは、すべてのデータ型が可変長で扱われるとのことです。整数型やchar型もだそうで、SQLiteみたいですね。


auto_incrementについて。
InnoDBでは、id列がインクリメンタルに加算されますが、
Falconでは、id値を指定することで、次回のauto_increment値が変動するそうです。
これは、設計上気をつける必要がありますね。


以上をまとめてみて、1度使ってみたいエンジンだと感じました。まずはβ版を楽しみに待ちましょうw


MySQLの新ストレージエンジン Falcon徹底リサーチ