mysql批量插入10万条数据性能测试报告

mysql批量插入10万条数据性能测试报告

  • 测试mysql的插入性能
    • 测试过程
    • 总结

测试mysql的插入性能

测试过程

我编写了一个sql的随机函数来生成固定长度的字符串作为username与password字段的值。(函数是网上找的,自己改了一下)具体sql语句如下:

DELIMITER // 
DROP FUNCTION IF EXISTS `rand_string` // 
CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET utf8 
BEGIN 
DECLARE chars_str varchar(255) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; 
DECLARE return_str varchar(255) DEFAULT ''; 
DECLARE i INT DEFAULT 0; 
WHILE i < n DO 
SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1)); 
SET i = i + 1; 
END WHILE; 
RETURN return_str; 
END//

另外我编写了一个存储过程来进行批量的数据插入操作:

DELIMITER // 
DROP PROCEDURE IF EXISTS `batch_insert` ;
CREATE PROCEDURE `batch_insert`(in n INT) 
BEGIN 
DECLARE return_str varchar(255) DEFAULT ''; 
DECLARE i INT DEFAULT 0; 
WHILE i < n DO 
insert into city_info_user(username,password)VALUES(rand_string(10),rand_string(10)) ; 
SET i = i + 1; 
END WHILE; 

END//

表结构如下:

mysql批量插入10万条数据性能测试报告_第1张图片

我是从18:04分执行语句的:

call batch_insert(100000);

写到这里,时间已经是18:21了,可以看到,只插入了3万多条,平均每秒也就是75条左右:

mysql批量插入10万条数据性能测试报告_第2张图片
我的个人笔记本是thinkpad,配置如图:
mysql批量插入10万条数据性能测试报告_第3张图片
运行过程中,可以看到,cpu和内存还是比较闲的,而相比之下,磁盘几乎处于满负荷状态:
mysql批量插入10万条数据性能测试报告_第4张图片

总结

这次算是切身的感受到了数据库(磁盘操作的性能)对于计算机系统的整体效率的影响。IO操作是一个软件系统的主要性能瓶颈。

文章都写完了,数据依然没有插完。只插入了4万8千多条。当前时间是18:32。哎!!!!!!!

你可能感兴趣的:(计算机)