InnoDB странные выступления - PullRequest
0 голосов
/ 14 августа 2011

Я провожу некоторые тесты с очень простой таблицей 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 Ответ

1 голос
/ 14 августа 2011

InnoDB по умолчанию работает в режиме AUTOCOMMIT, что означает, что для каждой вставки требуется две отдельные операции записи на диск.Если у вас есть только один дисковод на вашей машине, иногда вам может потребоваться немного подождать до этого.Кроме того, AFAIR InnoDB раньше имел (не уверен, что это все еще так) небольшую проблему с производительностью при записи на диск в Windows, но я думаю, что это включало параллелизм выше 1.

...