mysql INNODB вставляет очень медленно

mysql INNODB вставляет очень медленно

Схема базы данных выглядит следующим образом.

 CREATE  TABLE  `items` (  
 `id` mediumint( 8  )  unsigned NOT  NULL  AUTO_INCREMENT ,
 `name` varchar( 45  )  NOT  NULL ,
 `main_type` tinyint( 4  )  NOT  NULL ,
 `rarity` tinyint( 4  )  NOT  NULL ,
 `stack_size` smallint( 6  )  NOT  NULL ,
 `sub_type` tinyint( 4  )  NOT  NULL ,
 `cost` mediumint( 8  )  unsigned NOT  NULL ,
 `ilvl` smallint( 6  )  unsigned NOT  NULL DEFAULT  '0',
 `flavor_text` varchar( 250  )  NOT  NULL ,
 `rlvl` tinyint( 3  )  unsigned NOT  NULL ,
 `final` tinyint( 4  )  NOT  NULL DEFAULT  '0',
 PRIMARY  KEY (  `id`  )  ) ENGINE  = InnoDB  DEFAULT CHARSET  = ascii;

Теперь, вставка в эту таблицу занимает 0,22 секунды. Я не знаю, почему так долго вставляется одна строка. Чтения действительно очень быстрые, около 0,005 секунд. С использованием примера конфигурации отсюдаdev mysql innodbв среднем ~0,002 - ~0,005 секунды. Почему для одной вставки требуется в 100 раз больше времени, мне не понятно. Мой компьютер выглядит следующим образом. ОС: Debian Sid x86-x64, Mysql 5.1, ОЗУ: 4 ГБ ddr2, процессор 2,0 ГГц двухъядерный, HDD 7200 об/мин 32 МБ кэш 640 ГБ.

Почему SELECT * FROM ; занимает почти в 100 раз больше времени, itemsчем INSERT INTO items...;, я никогда не пойму. Это все еще маленькая таблица, всего 70 строк, и это заняло столько времени, даже когда в ней было 0 строк.

Редактировать: Также эта таблица имеет довольно много других таблиц, связанных с ней через идентификатор. Есть несколько из них, которые связаны с ней и делают on update=cascade; on delete=cascade;. Я считаю, что это самая большая проблема здесь. Если это так, то я, вероятно, могу войти и изменить ее и выполнить отдельные удаления из различных мелких вещей, когда они удаляются. Скорость вставки, кажется, составляет ~0,2 секунды, независимо от того, делаю ли я вставку только itemsили я также делаю это в другой таблице, которая имеет ссылку внешнего ключа на основную.

решение1

Ну, моя первая догадка, что ваш InnoDB, вероятно, сломан. Вы можете проверить, нет ли каких-либо

  • триггеры, которые будут выполнять медленную операцию по вставке
  • происходят процессы, которые блокируют таблицу
  • внешние ключи/ограничения, указывающие на эту таблицу

Лучший способ полностью проверить базу данных на предмет всего, что может вызвать подобные проблемы, — это прочитать дамп схемы с помощью команды mysqldump.

Связанный контент