MySql循环写入代码

[数据库技术] 季雨林 2019/9/7 0:10:30

前文讲到了我使用SQL Server数据库时候,使用一段循环代码压测数据库写入性能的例子。

今天记录下与MySql的区别。mysql不支持直接使用sql可视化Navicat管理工具输入这样一段循环体执行,因此想了个办法讲循环体使用存储过程包裹起来,调用存储过程来测试循环写入表的效果。


数据库表结构准备

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `testtable`;
CREATE TABLE `testtable` (
  `testKey` varchar(50) DEFAULT NULL,
  `testValue` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;


循环写入语句:

drop procedure if exists test_insert;
CREATE PROCEDURE test_insert () 
BEGIN
    DECLARE i INT DEFAULT 0;
    while i<1000
    do
        #插入一行
        INSERT INTO TestTable
            ( TestKey , TestValue )
        VALUES
            ( now(),'0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789' );
        set i = i+1;
    end while;	
end;

set @starttime=now();
call test_insert();
SELECT TIMESTAMPDIFF(SECOND,@starttime,now()) as '执行时间(秒)';  

drop procedure if exists test_insert;


测试结果有点不太理想,mysql在ssd硬盘下,写入10000条居然耗时34秒,每秒才不到300。跟sql server类似的写法性能相差很大,不清楚是哪个因素可以影响到。


原文地址: https://www.opengps.cn/Blog/View.aspx?id=428 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

评论

暂无评论!

发表评论:

用于接收作者回复信息
点击更换验证码 - openGPS提示