mysql/innodb での挿入クエリが、かなり強力な CPU を備えたマシンで少なくとも 40 ミリ秒持続する正確な原因は何なのか疑問に思っています。「同等の」クエリは、同じ MyISAM テーブルで 10 ミリ秒未満で実行されます (テーブルには外部キーがありません)。タイミングは MySQL コンソールからのものです。
これは、再現のための「できるだけ単純な」db 構造です。
CREATE TABLE `test_table_innodb` (
`id` int NOT NULL AUTO_INCREMENT,
`int_column` int NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `test_table_myisam` (
`id` int NOT NULL AUTO_INCREMENT,
`int_column` int NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql コンソールから同じクエリを実行しています (InnoDB の場合はトランザクションを自動コミットします)。その時点で他のクエリはマシン上で実行されておらず、結果は次のとおりです。
mysql> insert into test_table_myisam (int_column) values (5);
Query OK, 1 row affected (0.00 sec)
mysql> insert into test_table_innodb (int_column) values (5);
Query OK, 1 row affected (0.06 sec)
トランザクションのオーバーヘッドにより、クエリが InnoDB テーブルに対してより長く実行されますか? または?