全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Mysql中几种插入效率的实例对比

前言

最近因为工作的需要,要在Mysql里插入大量的数据大约1000w,目测会比较耗时。所以现在就像测试一下到底用什么插入数据的方法比较快捷高效。

下面就针对每一种方法分别测试不同数据量下的插入效率。

测试数据库的基本与操作如下:

mysql> create database test;
Query OK, 1 row affected (0.02 sec)
mysql> use test;
Database changed
mysql> create table mytable(id int primary key auto_increment ,value varchar(50));
Query OK, 0 rows affected (0.35 sec)
mysql> desc mytable;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra  |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| value | varchar(50) | YES | | NULL |  |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.02 sec)

方便测试,这里建了一个表,两个字段,一个是自增的id,另一个是字符串表示内容。

测试时每次实验结束都要mysql> truncate mytable,来清空已存在的表。

方法一:逐条插入

测试代码:(中间有1000条insert语句,用vim复制粘贴比较方便,写完后保存到a.sql,然后在mysql提示符中输入source a.sql)

set @start=(select current_timestamp(6));
insert into mytable values(null,"value");
......
insert into mytable values(null,"value");
set @end=(select current_timestamp(6));
select @start;
select @end;

输出结果:

Query OK, 1 row affected (0.03 sec)
......
Query OK, 1 row affected (0.03 sec)
Query OK, 0 rows affected (0.00 sec)
+----------------------------+
| @start   |
+----------------------------+
| 2016-05-05 23:06:51.267029 |
+----------------------------+
1 row in set (0.00 sec)
+----------------------------+
| @end   |
+----------------------------+
| 2016-05-05 23:07:22.831889 |
+----------------------------+
1 row in set (0.00 sec)

总共耗时31.56486s,事实上几乎每条语句花的时间是差不多的,基本就是30ms。

这样子1000w的数据就得花87h。

至于更大的数据量也就不试了,这种方法肯定不可取。

方法二:基于事务的批量插入

实际上就是把这么多的查询放在一个事务中。事实上方法一中没一条语句都开了一个事务,因此才会特别慢。

测试代码:(与方法一基本类似,主要添加两行,由于比较快,这里测试了多种数据量)

set @start=(select current_timestamp(6));
start transaction;
insert into mytable values(null,"value");
......
insert into mytable values(null,"value");
commit;
set @end=(select current_timestamp(6));
select @start;
select @end;

测试结果:

数据量 时间(s)
1k  0.1458
1w  1.0793
10w 5.546006
100w 38.930997

看出来基本是对数时间,效率还是比较高的。

方法三:单条语句一次插入多组数据

就是一条insert一次插入多个value。

测试代码:

insert into mytable values (null,"value"),
    (null,"value"),
    ......
    (null,"value");

测试结果:

数据量 时间(s)
1k  0.15
1w  0.80
10w 2.14
100w *

看上去也是对数时间,而且比方法二要稍微快一点。不过问题在于单次SQL语句是有缓冲区大小限制的,虽然可以修改配置让他变大,但也不能太大。所以在插入大批量的数据时也用不了。

方法四:导入数据文件

将数数据写成数据文件直接导入(参照上一节)。

数据文件(a.dat):

null value
null value
.....
null value
null value

测试代码:

mysql> load data local infile "a.dat" into table mytable;

测试结果:

数据量 时间(s)
1k  0.13
1w  0.75
10w 1.97
100w 6.75
1000w 58.18

时间最快,就是他了。。。。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# mysql表添加数据  # mysql  # insert  # mysql在表中写入数据  # C++操作MySQL大量数据插入效率低下的解决方法  # Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)  # MySql批量插入优化Sql执行效率实例详解  # mysql中迅速插入百万条测试数据的方法  # 用一条mysql语句插入多条数据  # MYSQL批量插入数据的实现代码  # mysql数据库插入速度和读取速度的调整记录  # MySql避免重复插入记录的几种方法  # 事实上  # 放在  # 就像  # 让他  # 是有  # 都要  # 多个  # 就不  # 才会  # 这么多  # 更大  # 开了  # 较高  # 要在  # 太大  # 但也  # 就得  # 种方法  # 他了  # 这篇文章 


相关文章: 图册素材网站设计制作软件,图册的导出方式有几种?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  已有域名如何快速搭建专属网站?  已有域名能否直接搭建网站?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  建站主机核心功能解析:服务器选择与网站搭建流程指南  专业商城网站制作公司有哪些,pi商城官网是哪个?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  郑州企业网站制作公司,郑州招聘网站有哪些?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  如何选择靠谱的建站公司加盟品牌?  如何快速搭建高效WAP手机网站吸引移动用户?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  制作表格网站有哪些,线上表格怎么弄?  建站之星如何开启自定义404页面避免用户流失?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何通过WDCP绑定主域名及创建子域名站点?  建站之星导航如何优化提升用户体验?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  如何零成本快速生成个人自助网站?  如何用VPS主机快速搭建个人网站?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  网页设计网站制作软件,microsoft office哪个可以创建网页?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  南宁网站建设制作定制,南宁网站建设可以定制吗?  建站之星后台密码遗忘或太弱?如何重置与强化?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  如何用5美元大硬盘VPS安全高效搭建个人网站?  建站之星导航配置指南:自助建站与SEO优化全解析  太平洋网站制作公司,网络用语太平洋是什么意思?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  C++如何编写函数模板?(泛型编程入门)  建站之星如何助力企业快速打造五合一网站?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  在线教育网站制作平台,山西立德教育官网?  css网站制作参考文献有哪些,易聊怎么注册?  如何通过主机屋免费建站教程十分钟搭建网站?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  建站之星ASP如何实现CMS高效搭建与安全管理?  重庆市网站制作公司,重庆招聘网站哪个好?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  北京制作网站的公司,北京铁路集团官方网站?  如何快速生成高效建站系统源代码? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。