そもそもトランザクションがあるエンジン(InnoDB)と無いエンジン(MyISAM)を比較して
意味があるのかと言われるとそれまでですが、一応、更新系のパフォーマンスも比較してみます。

MyISAMの圧勝が想像できますが。

測定環境についてはこちらを参照して下さい。

・データ件数は100万件
こちらの構造のテーブルをInnoDBとMyISAMで作成して処理速度を比較

以下SQL中の「テーブル名 normal」にはMyISAMなら normal2 がセットされます。

1.PrimaryKeyでUPDATE(更新対象は非インデックス項目)

UPDATE normal SET name=%s,dob=NOW() WHERE id = %d

※%idは1~100万の範囲でランダムに変化
※%sにはランダムな文字列をセットします
※nameもdobもINDEXには指定されていません

スレッド数 MyISAM InnoDB

PrimaryKeyでUPDATE(更新対象は非インデックス項目)


やはり6~8倍程度MyISAMが速いですね。

2.PrimaryKeyでUPDATE(更新対象がインデックス項目の場合)

UPDATE normal SET email=%s,dob=NOW() WHERE id = %d

※%idは1~100万の範囲でランダムに変化
※%sにはランダムな文字列をセットします
※emailはUnique INDEXに指定されています

スレッド数 MyISAM InnoDB

PrimaryKeyでUPDATE(更新対象がインデックス項目の場合)


7倍程度MyISAMが高速です。
更新項目が非INDEXの場合に比べて、それほど遅くなっている印象がありません。

次回はdeleteとinsertを計測します。