InnoDB 性能不稳定

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())

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

我对简单的 SELECT 语句有同样的问题:

SELECT Body FROM Comments WHERE UserId=1

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

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

答案1

对于 InnoDB,“auto_increment”变量应该位于索引中(第一个或单独一个),以避免一些锁定问题。据我所知,MyISAM 不会发生这种情况。

顺便问一下,为什么“Id”不是主键?这并不是必要的,只是“看起来”它应该是这个表的主键。

相关内容