Mysql中四种插入方法的效率对比

这篇文章通过实例跟大家介绍了mysql中几种插入方法的效率对比,这其中包括逐条插入、基于事务的批量插入、单条语句一次插入多组数据以及导入数据文件等四种方法的对比,文中通过实例代码介绍很详细,需要的朋友们下来来一起看看吧。

前言

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

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

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

mysql> create database test;Query OK, 1 row affected (0.02 sec)mysql> use test;Database changedmysql> 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。

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

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

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

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

Calliper 文档对比神器 Calliper 文档对比神器

文档内容对比神器

Calliper 文档对比神器 28 查看详情 Calliper 文档对比神器

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.14581w  1.079310w 5.546006100w 38.930997

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

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

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

测试代码:

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

测试结果:

数据量 时间(s)1k  0.151w  0.8010w 2.14100w *

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

方法四:导入数据文件

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

数据文件(a.dat):

null valuenull value.....null valuenull value

测试代码:

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

测试结果:

数据量 时间(s)1k  0.131w  0.7510w 1.97100w 6.751000w 58.18

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

以上就是Mysql中四种插入方法的效率对比的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/413699.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 00:16:07
下一篇 2025年11月7日 00:17:34

相关推荐

  • Go 语言在处理高并发数据库连接时的常见问题与解决方案

    在处理高并发数据库连接时,go 语言开发者应采取以下措施:1. 通过设置maxopenconns和maxidleconns优化连接池管理;2. 使用无锁数据结构或原子操作减少锁竞争;3. 利用tx类型正确管理事务,并考虑隔离级别和并发控制;4. 结合context包设置超时时间和重试逻辑以增强系统健…

    2025年12月15日
    000
  • 如何优化Debian系统中Swagger的性能

    为了提升Debian平台上Swagger的运行效率,可以从多个角度进行优化。以下是一些行之有效的改进方法: 硬件层面的优化 扩展内存容量:提高服务器RAM有助于显著增强Swagger响应能力。升级至高性能CPU:更强的处理器可以更高效地处理请求任务。改用SSD存储设备:相比传统机械硬盘,固态硬盘具备…

    2025年12月15日
    000
  • 如何利用Debian优化JSP数据库连接

    在基于Debian的系统中提升JSP与数据库之间的连接效率,可以通过多个层面进行调优。以下是一些核心的优化措施和建议: 1. 硬件层面优化 扩展内存容量:增加系统RAM有助于减少磁盘I/O操作,从而加快JSP页面响应速度。采用固态硬盘(SSD):相比传统机械硬盘,SSD具有更快的数据读写能力,显著提…

    2025年12月15日
    000
  • mysql视图debian创建与使用

    在Debian操作系统中创建并使用MySQL视图(View)的具体操作如下: 1. 安装MySQL服务 如果尚未安装MySQL服务,可以通过以下命令进行安装: sudo apt updatesudo apt install mysql-server 2. 进入MySQL数据库 完成安装后,使用以下命…

    2025年12月15日
    000
  • debian下mysql函数使用

    在Debian操作系统中,MySQL函数的使用方式与其他Linux发行版本保持一致。这些函数主要用于对数据进行操作和处理,涵盖字符串、日期、数值等多个方面。下面是一些常见的MySQL函数及其具体应用: 字符串处理函数: CONCAT(str1, str2, …):用于拼接多个字符串。SUBSTRIN…

    2025年12月15日
    000
  • Debian中env文件如何设置

    在Debian操作系统中,.env文件常用于保存环境变量,这些变量可在程序启动时被读取。如需配置.env文件,请依照以下步骤进行: 打开终端窗口。利用文本编辑器(例如nano、vim或gedit)创建一个.env文件。以nano为例,执行如下命令: nano .env 该命令将在当前目录下新建一个名…

    2025年12月15日
    000
  • mysql触发器debian应用

    在Debian操作系统中使用MySQL触发器,需要按照以下步骤操作: 安装MySQL服务器: 如果尚未安装MySQL服务器,请打开终端并运行以下命令进行安装: sudo apt-get update sudo apt-get install mysql-server 安装MySQL客户端: 为了更方…

    2025年12月15日
    000
  • debian系统mysql权限管理

    在Debian操作系统中,MySQL的权限配置主要涵盖以下几点: 用户账户操作 数据库与表的访问限制 权限授予与回收 下面列出了一些常用的MySQL权限操作命令: 1. 用户账户操作 创建新用户: CREATE USER ‘用户名’@’本地主机’ IDENTIFIED BY ‘密码’; 删除已有用户…

    2025年12月15日
    000
  • Debian与Docker的备份与恢复策略

    在Debian操作系统中,备份与恢复方案应根据实际需求和场景来定制。以下是一些常见的备份与恢复方法: Debian系统备份方法 利用tar命令全面备份系统:此方法能够生成包含所有系统文件、配置文件及用户数据的压缩备份。示例命令如下: tar -czvf backup.tar.gz –exclude…

    2025年12月15日
    000
  • Debian Spool文件夹最佳实践指南

    在Debian操作系统中,/var/spool目录是一个专门用来存放临时文件和数据的重要位置,这些文件往往由系统服务或后台进程创建。以下是一份关于Debian Spool文件夹的优化建议指南: Spool目录的功能解析 /var/spool/cron/crontabs: 用户定时任务的存储区域。/v…

    2025年12月15日
    000
  • Debian文件系统备份策略是什么

    Debian文件系统的备份策略主要包括备份方式的选择、备份软件的应用以及备份规划的设定。以下是一些常见的备份策略与工具: 备份方式 利用tar指令全面备份系统:此方法能够生成包含所有系统文件、配置文件及用户数据的压缩备份。示例如下: sudo tar -czvf backup.tar.gz –ex…

    2025年12月15日
    000
  • 怎样备份Debian Tomcat数据

    在Debian系统上备份Tomcat数据主要涉及备份Tomcat的配置文件、Web应用程序、日志文件以及可能的数据库。以下是备份Tomcat的基本流程: 备份流程 终止Tomcat服务: 在开始备份之前,请确保Tomcat服务已经停止。可以执行以下命令来关闭Tomcat: sudo systemct…

    2025年12月15日
    000
  • PHP扩展在Debian上怎么安装

    在Debian系统中安装PHP扩展,通常有以下几种方式可供选择: 方式一:利用APT包管理工具 更新APT软件包列表 sudo apt update 安装PHP扩展通过APT命令安装所需的PHP扩展。例如,如果想安装php-mysql扩展,可执行: sudo apt install php-mysq…

    2025年12月15日
    000
  • Debian Apache2的SEO优化技巧有哪些

    Debian Apache2的SEO优化技巧涵盖多个层面,以下是一些关键方法: 关键词研究:利用工具(如关键词魔术工具)挖掘页面的核心及辅助关键词。 优质内容创作:产出有价值且原创的内容,内容需经过深入调研,确保语言流畅且格式清晰。 内容排版与结构优化: 运用标题和小标题引导阅读。编写简洁明了的段落…

    2025年12月15日
    000
  • Debian支持哪些PHP版本

    Debian支持多个PHP版本,包括但不限于以下几种: PHP 7.4:这是一个长期支持(LTS)版本,提供了良好的性能和安全性,适合大多数Web应用。PHP 8.0:提供了最新的特性和性能改进,适合需要最新技术的用户。PHP 8.2:在Debian 12中默认安装的版本,适合需要最新PHP功能且不…

    2025年12月15日
    000
  • Debian MySQL集群搭建步骤是什么

    在Debian系统上搭建MySQL集群可以通过多种方式实现,包括使用MySQL Replication(主从复制)、MySQL Cluster等。以下是使用MySQL Replication实现高可用性MySQL集群的步骤: 1. 安装MySQL服务器 在每台Debian服务器上安装MySQL服务器…

    2025年12月15日
    000
  • Debian Apache如何实现动态网站

    在Debian系统上借助Apache搭建动态网站,通常需要遵循以下步骤: 1. 安装Apache服务器 首先,确认你的Debian系统已安装Apache。可以通过执行以下命令完成安装: sudo apt updatesudo apt install apache2 2. 启动并设置Apache开机启…

    2025年12月15日
    000
  • 如何选择合适的Debian LAMP版本

    在选择合适的Debian LAMP(Linux, Apache, MySQL/MariaDB, PHP)版本时,您应该考虑以下几个关键因素: 稳定性和长期支持 稳定版(Stable):例如Debian 11 (Bullseye),这是一个经过长时间测试和修复后发布的版本,具有极高的稳定性和安全性。它…

    2025年12月15日
    000
  • Debian LAMP常见问题解答

    Debian LAMP是指基于Debian操作系统、运行Apache Web服务器、MySQL数据库和PHP的解决方案。以下是关于Debian LAMP的一些常见问题及其解决方法: 1. 如何在Debian上安装LAMP环境? 安装步骤:更新系统软件包列表:sudo apt update安装Apac…

    2025年12月15日
    000
  • debian分区能备份吗

    是的,Debian分区可以备份。备份是确保数据安全的重要步骤,可以通过多种方法和工具来实现。以下是一些常用的备份方法和相关信息: 备份方法 使用tar命令备份整个系统:可以创建一个包含整个系统文件、配置文件和用户数据的压缩备份。使用以下命令进行备份: sudo tar -czvf backup.ta…

    2025年12月15日
    000

发表回复

登录后才能评论
关注微信