【发布时间】:2011-05-05 10:24:11
【问题描述】:
我是 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,默认配置为开发人员机器(我也尝试过服务器配置但性能相似)。
提前致谢。 约翰
【问题讨论】:
标签: mysql windows performance innodb