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表进行相同的测试时,我没有任何问题。
默认情况下,InnoDB在AUTOCOMMIT模式下工作,这意味着每次插入都需要两次单独写入磁盘操作。如果你的机器只有一个磁盘驱动器,有时候你可能需要等一下。此外,AFAIR InnoDB在Windows中写入磁盘时有一些性能问题(不确定是否仍然如此),但我认为它涉及的并发性高于1.
我没有提到的一点是,即使使用简单的SELECT语句,执行时间问题发生... – user257938
我认为这可能会更好地把这个问题http://serverfault.com/ – Mchl
好的,谢谢你的时间。 – user257938
什么是您的操作系统和MySQL版本? – Mchl
我的操作系统是Window 7 with MySQL v5.5 – user257938
属于http://serverfault.com/系统管理员和桌面支持专业人士的问答 – Mchl