gpt4 book ai didi

MySQL InnoDB 插入性能 (Windows)

转载 作者:可可西里 更新时间:2023-11-01 11:38:17 25 4
gpt4 key购买 nike

我是 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,开发人员机器的默认配置(我也试过服务器配置,但性能相似)。

提前致谢。约翰

最佳答案

就像peufeu说的,只用一次事务就可以大大提高性能。如果您愿意放松 ACID,您可以通过设置

获得更好的性能
innodb_flush_log_at_trx_commit=0

在 my.ini 中。

关于MySQL InnoDB 插入性能 (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5896162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com