Я новичок в MySQL, и у меня есть некоторые сомнения по поводу производительности InnoDB .У меня есть таблица, в которой я хочу сохранить некоторые меры, и я тестирую интенсивную вставку с использованием цикла в хранимой процедуре:
CREATE TABLE `measures` (
`Id` int(10) unsigned NOT NULL,
`DT` datetime NOT NULL,
`TF1` float DEFAULT '0',
`IF1` float DEFAULT '0',
`PAF1` float DEFAULT '0',
`PRF1` float DEFAULT '0',
`CF1` float DEFAULT '0',
`TF2` float DEFAULT '0',
`IF2` float DEFAULT '0',
`PAF2` float DEFAULT '0',
`PRF2` float DEFAULT '0',
`CF2` float DEFAULT '0',
`TF3` float DEFAULT '0',
`IF3` float DEFAULT '0',
`PAF3` float DEFAULT '0',
`PRF3` float DEFAULT '0',
`CF3` float DEFAULT '0',
`CTotal` float DEFAULT '0',
PRIMARY KEY (`Id`,`DT`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE PROCEDURE `sp_INSERT_TEST`()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (i<=6000) DO
INSERT INTO measures
(Id, DT, TF1, IF1, PAF1, PRF1, CF1, TF2, IF2, PAF2, PRF2, CF2,
TF3, IF3, PAF3, PRF3, CF3, CTotal)
VALUES
(1, TIMESTAMPADD(MINUTE,i, NOW()),
0.1, 1, 10, 100, 1000,
0.2, 2, 20, 200, 2000,
0.3, 3, 30, 300, 3000,
i * 10);
SET i=i+1;
END WHILE;
END
Общее время выполнения составляет около 150 секунд , но если я использую MyISAM
вместо InnoDB
, время будет около 0,2 секунды .
Является ли эта разница в производительности между двумя двигателями нормальной?Можно ли улучшить вставки, используя InnoDB, чтобы приблизиться к производительности MyISAM или это ограничение движка?
Примечание: я использую MySQL 5.1.56 (64 бит) , Windows 7 x64 , с конфигурацией по умолчанию для компьютера разработчика (я также пробовал настройку сервера, но производительность аналогична).
Заранее спасибо.John