ワシはワシが育てる

週刊少年ジャンプと任天堂のゲームが三度のメシより好きです。

RailsでMyISAMを使うときの注意

MyISAMは当然ですがトランザクションが効きません。
その反面、更新性能が高く、閲覧履歴などデータを高頻度に蓄積するときなどに重宝します。

ただしRailsで使う場合、これを「単にInnnoDBのトランザクションが効かない版」として捉えるとハマります。

というのもRspecなどのテストツールを使う場合、頻繁に登録→ロールバックが発生しますが、InnnoDBのMyISAMのテーブルに侵食すればたちまち整合性が取れなくなってしまうからです。

このような理由でRailsInnoDBを前提としているのかと思いますが、それでもMyISAMを使いたい場合は別のデータベースエンジンを利用しているかのように扱う必要があります。

ただ個人的にはそこまでしてMyISAMを使うのならNoSQLを使った方が意味付け的にもいいんじゃないのかなと思います。

※後書き @2014/07/20
普通にdatabase_cleanerのようなライブラリ使えば問題ありませんでした。
誤った情報を掲載してしまい申し訳ございません。