そもそもトランザクションがあるエンジン(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 |
やはり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 |
7倍程度MyISAMが高速です。
更新項目が非INDEXの場合に比べて、それほど遅くなっている印象がありません。
次回はdeleteとinsertを計測します。






