InnoDB奇怪的表现

时间:2011-08-13 20:18:48

标签: mysql innodb

我正在使用一个非常简单的InnoDB表(名为Test)进行一些测试,其结构如下:

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

UserId的另一个索引:

KEY Idx_Test_UserId (UserId) USING BTREE

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

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

...有时我会在几毫秒内完成操作,但有时则需要大约一秒钟。

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

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

1 个答案:

答案 0 :(得分:1)

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