Схема базы данных выглядит следующим образом.
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 ГГц, жесткий диск 7200 об / мин, 32 МБ, кэш 640 ГБ.
Почему для SELECT * FROM требуется почти в 100 раз больше времени items
; vs INSERT INTO items
...; никогда не будет иметь для меня никакого смысла. Это все еще небольшая таблица, всего 70 строк, и это длилось так долго, даже когда в ней было 0 строк.
Изменить: также в этой таблице есть несколько других таблиц, связанных с собой через идентификатор. Есть несколько из них, которые связаны с ним и делают on update = cascade; on delete = cascade ;. Я считаю, что это самая большая проблема. Если это так, я, вероятно, смогу войти и изменить его и выполнить индивидуальное удаление различных мелочей, когда они будут удалены. Скорость вставки кажется ~ 0,2 секунды, если я вставляю только items
или я также делаю это на другой таблице, у которой есть ссылка внешнего ключа на основную.
Что ж, я предполагаю, что ваш InnoDB, вероятно, сломан. Вы можете проверить, нет ли
Лучший способ полностью проверить базу данных на предмет того, что может вызвать такие проблемы, - это прочитать дамп схемы с помощью команды mysqldump.