MySQL与MSSQL INSERT速度对比测试及MySQL插入性能优化方案
MySQL批量INSERT操作性能优化实测
测试环境为Windows 10,测试场景为循环执行10000次完全相同的插入操作,初始测试MySQL与MSSQL的性能对比如下:
初始性能测试结果
MySQL执行情况
执行命令:CALL TestStoredProcedure(10000);
执行结果:
/* Affected rows: 0 Found rows: 1 Warnings: 0 Duration for 1 query: 48.906 sec. */
MSSQL执行情况
执行命令:EXEC TestStoredProcedure @iterations = 10000;
执行结果:
/* Affected rows: 10,000 Found rows: 0 Warnings: 0 Duration for 1 query: 0.875 sec. */
测试用存储过程代码
MySQL存储过程
BEGIN DECLARE counter INT DEFAULT 1; WHILE counter <= iterations DO INSERT INTO mytable (COLUMN1, COLUMN2) VALUES (counter, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); SET counter = counter + 1; END WHILE; END
MSSQL存储过程
BEGIN DECLARE @counter int SET @counter = 1 WHILE (@counter <= @iterations) BEGIN INSERT INTO mytable (COLUMN1, COLUMN2) VALUES (@counter, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') SET @counter = @counter + 1 END END
优化方案及实测结果
经排查验证,核心优化方案为在MySQL执行插入操作前添加START TRANSACTION;语句手动开启事务,优化后各存储引擎的实测耗时如下:
- InnoDB(开启手动事务):0.406 sec
- InnoDB(默认配置):48.312 sec
- MyISAM:23.218 sec
- MEMORY:22.922 sec
- BLACKHOLE:22.890 sec
- ARCHIVE:22.860 sec
内容的提问来源于stack exchange,提问作者MightyMouse
相关产品推荐
相关产品推荐

