接上文,继续测试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)的更多相关文章

  1. python+mysql:实现一千万条数据插入数据库

    作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...

  2. python连接mysql循环插入千万条数据脚本

    之前都是在mysql的存储过程中插入数据,毕竟mysql语法函数有限,很多都有限制.突然想到学了python正好可以练练手.首先需要安装pymysql模块包(模块包安装请自行百度) pip insta ...

  3. MySQL 快速添加百万条数据

    需要向数据库添加100W条测试数据,直接在普通表中添加速度太慢,可以使用内存表添加,然后将内存表数据复制到普通表 创建表 # 内存表 DROP TABLE IF EXISTS `test_memory ...

  4. 【JDBC】使用Spring提供的JDBCTemplate通过Statement向MySql数据库插入千万条数据,耗时4m55s,使用insert语句批量插入方式二

    这回依然是使用 insert批量插入这种方式 insert into emp(name,age,cdate) values ('A' , 20, '2019-10-13 00:00:00'), ('B ...

  5. 【JDBC】使用Spring提供的JDBCTemplate通过PrepareStatement向MySql数据库插入千万条数据,耗时32m47s,速度提升有限

    数据库环境还和原来一样,只是从Statement换成了PrepareStatement,都说PrepareStatement因为预编译比Statement快,但是实际运行真快不了多少. 代码如下: p ...

  6. mysql快速导入5000万条数据过程记录(LOAD DATA INFILE方式)

    mysql快速导入5000万条数据过程记录(LOAD DATA INFILE方式) 首先将要导入的数据文件top5000W.txt放入到数据库数据目录/var/local/mysql/data/${d ...

  7. mysql自定义函数并在存储过程中调用,生成一千万条数据

    mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...

  8. LOAD DATA INFILE读取CSV中一千万条数据至mysql

    作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...

  9. [MyBatis]五分钟向MySql数据库插入一千万条数据 批量插入 用时5分左右

    本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 我的数据库环境是mys ...

  10. orcle 如何快速插入百万千万条数据

    有时候做实验测试数据用到大量数据时可以用以下方法插入: 方法一:使用xmltable create table bqh8 as select rownum as id from xmltable('1 ...

随机推荐

  1. 1. Mybatis 简介

    1. Mybatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code.随着 ...

  2. 讯飞离线语音合成新版(Aikit)-android sdk合成 demo(Java版本)

    前言:科大讯飞的新版离线语音合成,由于官网demo是kt语言开发的,咱也看不懂kt,搜遍了全网也没看到一个java版的新版离线语音demo,现记录下,留给有缘人参考!!!!!毕竟咱在这上面遇到了不少的 ...

  3. 如何使用libavfilter库给输入文件input.yuv添加视频滤镜?

    一.视频滤镜初始化 本次代码实现的是给输入视频文件添加水平翻转滤镜,在视频滤镜初始化部分我们可以分为以下几步进行: 1.创建滤镜图结构 视频滤镜功能最核心的结构为滤镜图结构,即AVFilterGrap ...

  4. .NET Core 3.1使用docker打包并部署

    目录 简介 环境介绍 开发环境 部署环境 编写Dockerfile文件 生成Docker镜像 运行容器 访问接口 结语 简介 本文主要说明使用.NET Core 3.1搭建的站点如何使用docker打 ...

  5. java端口被占用解决办法

  6. 使用C#编写.NET分析器(完结)

    译者注 这是在Datadog公司任职的Kevin Gosse大佬使用C#编写.NET分析器的系列文章之一,在国内只有很少很少的人了解和研究.NET分析器,它常被用于APM(应用性能诊断).IDE.诊断 ...

  7. 最为常用的Laravel操作(2)-路由

    基本路由 // 接收一个 URI 和一个闭包 Route::get('hello', function () { return 'Hello, Laravel'; }); // 支持的路由方法 Rou ...

  8. Composer 镜像原理 (3) —— 完结篇

    相关文章 Composer 镜像原理 (1) -- 初识 Composer Composer 镜像原理 (2) -- composer.json Composer 镜像原理 (3) -- 完结篇 上一 ...

  9. 升讯威在线客服系统是如何实现对 IE8 完全完美支持的(怎样从 WebSocket 降级到 Http)【干货】

    简介 升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放.开源.共享.努力打造 .net 社区的一款优秀开源产品. 完整私有化包下载地址 https ...

  10. 2021-7-12 VUE的组件认识

    VUE组件简单实例 <!DOCTYPE html> <html> <head> <title> </title> </head> ...