InnoDB的奇怪表演

问题描述:

我做一些测试用一个非常简单的InnoDB表(名为Test)结构如下:InnoDB的奇怪表演

Id int(10) unsigned NOT NULL AUTO_INCREMENT 
UserId int(10) NOT NULL 
Body varchar(512) COLLATE utf8_unicode_ci NOT NULL 
CreatedAt datetime NOT NULL 

一个附加的索引上用户名:

KEY Idx_Test_UserId (UserId) USING BTREE 

当我尝试执行此查询...

INSERT INTO Comments (UserId,Body,CreatedAt) VALUES (1,'This is a test',NOW()); 

...有时我得到的操作在几毫秒内完成bu在其他一些时候,大约需要一秒钟。

我是唯一一个在这个特定表上做测试的人,我真的不明白我有这样的执行时间差异。

最后一点,当我使用MyISAM表进行相同的测试时,我没有任何问题。

+0

什么是您的操作系统和MySQL版本? – Mchl

+0

我的操作系统是Window 7 with MySQL v5.5 – user257938

+0

属于http://serverfault.com/系统管理员和桌面支持专业人士的问答 – Mchl

默认情况下,InnoDB在AUTOCOMMIT模式下工作,这意味着每次插入都需要两次单独写入磁盘操作。如果你的机器只有一个磁盘驱动器,有时候你可能需要等一下。此外,AFAIR InnoDB在Windows中写入磁盘时有一些性能问题(不确定是否仍然如此),但我认为它涉及的并发性高于1.

+0

我没有提到的一点是,即使使用简单的SELECT语句,执行时间问题发生... – user257938

+0

我认为这可能会更好地把这个问题http://serverfault.com/ – Mchl

+0

好的,谢谢你的时间。 – user257938