前回のUPDATEに続いて今回はDELETEとINSERTのパフォーマンスを比較します。

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

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

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

3.PrimaryKeyでDELETE

DELETE FROM normal WHERE id = %d

※%idは1~100万の範囲でランダムに変化

スレッド数 MyISAM InnoDB

PrimaryKeyでDELETE


MyISAMの性能にかなりばらつきがありますが4~7倍程度MyISAMが高速です。
InnoDBは同時スレッド数による性能変化がまったく見られません。

4.INSERT

INSERT IGNORE INTO normal (id, name, password, email, city, zip, dob, country_id, state_id) VALUES (%d, %s, %s, %s, %s, %s, NOW(), %d, %d)

※%dや%s等はすべてランダムな値がセットされます。

スレッド数 MyISAM InnoDB

INSERT


3~15倍程度MyISAMが高速です。
特に、同時スレッドに比してQPSが上昇していきます。
通常、更新があるシステムの場合はInnoDBを採用するのが原則ですが、
ログ出力など細かいこと?を気にしない用途の場合にMyISAMはかなり有効だと言えます。