MySQL快速导入千万条数据(2)
接上文,继续测试3000万条记录快速导入数据库。
一、导入前1000万条数据
清库、建库、新建表结构、导入前1000万条数据,结果:
■ 1000万行,有2索引导入耗时:16分钟
Query OK, 9999966 rows affected, 5920 warnings (16 min 12.95 sec)
Records: 9999966 Deleted: 0 Skipped: 0 Warnings: 5920
可见,导入千万条数据,性能下降明显。
二、导入前2000万条数据
清库、建库、新建表结构、导入前2000万条数据,结果:
■ 2000万行,无 索引导入耗时:45分钟
Query OK, 19999966 rows affected, 5920 warnings (45 min 2.05 sec)
Records: 19999966 Deleted: 0 Skipped: 0 Warnings: 5920
可见,导入更大量的数据,性能更是急剧下降,2000万条记录耗时长达45分钟!
由于是笔记本虚机,怀疑cpu性能、io性能、内存配置导致了这个结果。
三、导入后面的1000万条数据
由于一次导入千万条数据性能较低,因此决定把后面的1000万行,拆分为两部分,分两次导入,如下操作:
split -l 6000000 mysql_ab mysql_ab_
得到两个文件:
mysql_ab_aa 600万行
mysql_ab_ab 4579017行
插入mysql_ab_aa:耗时15分钟
LOAD DATA LOCAL INFILE '/root/mysql_ab_aa'
INTO TABLE tablename
FIELDS TERMINATED BY ', '
ENCLOSED BY "'"
LINES TERMINATED BY '\n';
Query OK, 6000000 rows affected (15 min 30.23 sec)
Records: 6000000 Deleted: 0 Skipped: 0 Warnings: 0
插入mysql_ab_ab:耗时8分钟
LOAD DATA LOCAL INFILE '/root/mysql_ab_ab'
INTO TABLE tablename
FIELDS TERMINATED BY ', '
ENCLOSED BY "'"
LINES TERMINATED BY '\n';
Query OK, 4579017 rows affected (7 min 51.05 sec)
Records: 4579017 Deleted: 0 Skipped: 0 Warnings: 0
四、建索引
再把对应的两个索引建上,每个索引耗时:3分钟
mysql> ALTER TABLE tablename ADD INDEX `master_id` (`master_id`);
Query OK, 0 rows affected (1 min 34.94 sec)
ALTER TABLE tablename ADD INDEX `code` (`code`);
Query OK, 0 rows affected (3 min 30.58 sec)
可见,3000万数据建普通索引,几分钟时间还是挺快的。
五、总结
纵观以上测试,导入3000万条数据耗时73分钟,如果将SQL文件拆分为单个文件500万条以内,可能会耗时更短,也许能控制在60分钟以内,如果电脑配置更高,则会更快。
后续继续在X86物理机做一个验证测试。
MySQL快速导入千万条数据(2)的更多相关文章
- python+mysql:实现一千万条数据插入数据库
作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...
- python连接mysql循环插入千万条数据脚本
之前都是在mysql的存储过程中插入数据,毕竟mysql语法函数有限,很多都有限制.突然想到学了python正好可以练练手.首先需要安装pymysql模块包(模块包安装请自行百度) pip insta ...
- MySQL 快速添加百万条数据
需要向数据库添加100W条测试数据,直接在普通表中添加速度太慢,可以使用内存表添加,然后将内存表数据复制到普通表 创建表 # 内存表 DROP TABLE IF EXISTS `test_memory ...
- 【JDBC】使用Spring提供的JDBCTemplate通过Statement向MySql数据库插入千万条数据,耗时4m55s,使用insert语句批量插入方式二
这回依然是使用 insert批量插入这种方式 insert into emp(name,age,cdate) values ('A' , 20, '2019-10-13 00:00:00'), ('B ...
- 【JDBC】使用Spring提供的JDBCTemplate通过PrepareStatement向MySql数据库插入千万条数据,耗时32m47s,速度提升有限
数据库环境还和原来一样,只是从Statement换成了PrepareStatement,都说PrepareStatement因为预编译比Statement快,但是实际运行真快不了多少. 代码如下: p ...
- mysql快速导入5000万条数据过程记录(LOAD DATA INFILE方式)
mysql快速导入5000万条数据过程记录(LOAD DATA INFILE方式) 首先将要导入的数据文件top5000W.txt放入到数据库数据目录/var/local/mysql/data/${d ...
- mysql自定义函数并在存储过程中调用,生成一千万条数据
mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...
- LOAD DATA INFILE读取CSV中一千万条数据至mysql
作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...
- [MyBatis]五分钟向MySql数据库插入一千万条数据 批量插入 用时5分左右
本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 我的数据库环境是mys ...
- orcle 如何快速插入百万千万条数据
有时候做实验测试数据用到大量数据时可以用以下方法插入: 方法一:使用xmltable create table bqh8 as select rownum as id from xmltable('1 ...
随机推荐
- ELK日志收集记录
logstash在需要收集日志的服务器里运行,将日志数据发送给es 在kibana页面查看es的数据 es和kibana安装: Install Elasticsearch with RPM | Ela ...
- 花朵识别系统Python+TensorFlow+Django+卷积神经网络算法实现
一.背景 花朵识别系统,基于Python实现,深度学习卷积神经网络,通过TensorFlow搭建卷积神经网络算法模型,并对数据集进行训练最后得到训练好的模型文件,并基于Django搭建可视化操作平台. ...
- Liunx下对php内核的调试
0x01前言 主要是对上一篇文章中php_again这道题的补充. 0x02下载php源码 cd /usr/local wget https://www.php.net/distributions/p ...
- 解决redis从服务器未配置主服务器密码导致数据未同步&磁盘饱满问题
问题前置场景 本人前几天买了一台2核4G+40G磁盘空间的云服务器用来学习使用,在服务器上安装了docker.为了学习redis主从架构,使用docker-compose部署了一主二从三台redis服 ...
- .NET Core 允许跨域的两种方式实现(IIS 配置、C# 代码实现)
〇.前言 当把开发好的 WebApi 接口,部署到 Windows 服务器 IIS 后,postman 可以直接访问到接口并正确返回,这并不意味着任务完成,毕竟接口嘛是要有交互的,最常见的问题莫过于跨 ...
- asp.net程序通过Microsoft Azure中SAML协议实现单点登录
1. 新建应用程序 登录Azure门户,进入左侧菜单"企业应用程序--所有应用程序",点"新建应用程序", 继续点"创建你自己的应用程序", ...
- List 接口及其常用方法
List 接口基本介绍 List接口是Collection接口的子接口,其主要特点如下: List中元素有序,是按照元素的插入顺序进行排序的.每个元素都有一个与之关联的整数型索引(索引从 0 开始), ...
- ERP查询Q报表开发代码
一,按照一般ERP开发流程可参考ERP开发流程,直到下载程序. 当我们的查询页签存在栏位需要判断或者特殊处理时,在global中的自定义模组变数下添加,例如: 1 #add-point:自定義模組變數 ...
- http请求其他接口的utils
首先在pom中加入 关于http需要的jar包 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcor ...
- 大白话讲讲 Go 语言的 sync.Map(二)
上一篇文章 <大白话讲讲 Go 语言的 sync.Map(一)> 讲到 entry 数据结构,原因是 Go 语言标准库的 map 不是线程安全的,通过加一层抽象回避这个问题. 当一个 ke ...