首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL批量插入数据,一次插入多少行数据效率最高?

假如需要插入的数据有百万条,那么一次批量插入多少条的时候,效率会高一些呢?这里博主和大家一起探讨下这个问题,应用环境为批量插入数据到临时表。...一次到底插入多少才合适呢? 三、批量插入数据测试 开始测试,但是一开始插入多少是合适的呢,是否有上限?查询mysql手册,我们知道sql语句是有大小限制的。...但是在达到30W以上之后,效率反而有所下降。这部分我的理解是mysql是要分配一定的内存给传过来的数据包使用,当批量插入的数据量到达一定程度之后,一次插入操作的开销就很耗费内存了。...参考:https://cloud.tencent.com/developer/article/1200824 参考:mysql技术内幕 Innodb篇 3、使用事务提升效率 还有一种说法,使用事务可以提高数据的插入效率...MySQL有innodb_log_buffer_size配置项,超过这个值会把innodb的数据刷到磁盘中,这时,效率会有所下降。所以比较好的做法是,在数据达到这个这个值前进行事务提交。

7.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL插入效率比较

现在我需要在Mysql插入大量的数据大约1000w,目测会比较耗时。所以现在就像测试一下到底用什么插入数据的方法比较快捷高效。 下面就针对每一种方法分别测试不同数据量下的插入效率。...方法一:逐条插入 测试代码:(中间有1000条insert语句,用vim复制粘贴比较方便,写完后保存到a.sql,然后在mysql提示符中输入source a.sql) set @start=(select...方法二:基于事务的批量插入 实际上就是把这么多的查询放在一个事务中。事实上方法一中没一条语句都开了一个事务,因此才会特别慢。...方法三:单条语句一次插入多组数据 就是一条insert一次插入多个value。...所以在插入批量的数据时也用不了。 方法四:导入数据文件 将数数据写成数据文件直接导入(参照上一节)。

2.8K20

MySQL 批量操作,一次插入多少行数据效率最高?

假如需要插入的数据有百万条,那么一次批量插入多少条的时候,效率会高一些呢?这里博主和大家一起探讨下这个问题,应用环境为批量插入数据到临时表。...一次到底插入多少才合适呢? 三、批量插入数据测试 开始测试,但是一开始插入多少是合适的呢,是否有上限?查询mysql手册,我们知道sql语句是有大小限制的。...但是在达到30W以上之后,效率反而有所下降。这部分我的理解是mysql是要分配一定的内存给传过来的数据包使用,当批量插入的数据量到达一定程度之后,一次插入操作的开销就很耗费内存了。...最新面试题整理:https://www.javastack.cn/mst/ 3、使用事务提升效率 还有一种说法,使用事务可以提高数据的插入效率,这是因为进行一个INSERT操作时,MySQL内部会建立一个事务...COMMIT; 事务需要控制大小,事务太大可能会影响执行的效率MySQL有innodb_log_buffer_size配置项,超过这个值会把innodb的数据刷到磁盘中,这时,效率会有所下降。

2.3K30

Mysql批量插入分析【面试+工作】

前言 最近发现几个项目中都有批次插入数据库的功能,每个项目中批次插入的写法有一些差别,所以本文打算对Mysql的批次插入做一个详细的分析。...准备 1.jdk1.7,mysql5.6.38 2.准备库和表 ? 测试与分析 下面准备几种插入的方式来分析优劣: 1.Statement插入方式 ?...此方法计算每次提交批量数据中的多少条数据,其中一个maxAllowedPacket参数,此参数在服务器端配置用来限制客户端每个包的最大字节数; 查询maxAllowedPacket: ?...此方式可以很好的执行批量数据的插入,但是如果数据量很大,一下执行所有数据的批次插入,很容易造成客户端内存的溢出,所以也可以使用第三种方式; 3.PreparedStatement分批次方式 部分代码如下...总结 本文通过三种方式来插入数据,从而了解Mysql批次插入的过程,了解到useLocalSessionState和rewriteBatchedStatements参数对性能的影响,以及maxAllowedPacket

1.9K20

MySql批量插入语句(INSERT)

使用INSERT语句实现批量插入 前言 在初始化数据库或者导入一些数据时,常常会用到批量的操作,如果在循环的脚本中使用单条插入数据的语句时,就意味着多次与数据库建立连接,这样会急剧消耗服务器的性能。...那么,MySql是提供了批量插入语句的,和单条插入语句类似。...单条插入语句写法 INSERT INTO [表名] ([列名],[列名]) VALUES([列值],[列值]); 批量插入语句写法 INSERT INTO [表名]([列名],[列名]) VALUES...([列值],[列值])), ([列值],[列值])), ([列值],[列值])); 由此看来两者很相似,批量插入语句则是在前者的值后面继续添加新的值,并用逗号分隔。...NULL, `sex` VARCHAR(16), PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8; 查看结果 批量插入记录

8.8K20

MySQL 批量插入:如何不插入重复数据?

知识这个东西,看来真的要温故而知新,一直不用,都要忘记了 业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入 那么问题来了,是不是每次插入之前都要查一遍...向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率 看来这个问题不止我一个人苦恼过。...user (name) SELECT 'telami' FROM dual WHERE NOT EXISTS (SELECT id FROM user WHERE id = 1) 这种方法其实就是使用了mysql...的一个临时表的方式,但是里面使用到了子查询,效率也会有一点点影响,如果能使用上面的就不使用这个。...这样在批量插入时,如果存在手机号相同的话,是不会再插入了的。 来源:www.telami.cn

3.6K20

MySql批量插入时,如何不插入重复的数据

业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入 那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?...向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率 看来这个问题不止我一个人苦恼过。...的一个临时表的方式,但是里面使用到了子查询,效率也会有一点点影响,如果能使用上面的就不使用这个。...item.mobileNumber} ) ON duplicate KEY UPDATE id = id 这里用的是Mybatis,批量插入的一个操作...这样在批量插入时,如果存在手机号相同的话,是不会再插入了的。

2.7K20

Mysql批量插入时,如何不插入重复的数据

业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入 那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?...向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率 看来这个问题不止我一个人苦恼过。...user (name) SELECT 'telami' FROM dual WHERE NOT EXISTS (SELECT id FROM user WHERE id = 1) 这种方法其实就是使用了mysql...的一个临时表的方式,但是里面使用到了子查询,效率也会有一点点影响,如果能使用上面的就不使用这个。...这样在批量插入时,如果存在手机号相同的话,是不会再插入了的。

5.3K21

MySql 批量插入时,如何不插入重复的数据

:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入 那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?...向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率 看来这个问题不止我一个人苦恼过。...的一个临时表的方式,但是里面使用到了子查询,效率也会有一点点影响,如果能使用上面的就不使用这个。...item.mobileNumber} ) ON duplicate KEY UPDATE id = id 这里用的是Mybatis,批量插入的一个操作...这样在批量插入时,如果存在手机号相同的话,是不会再插入了的。

3.4K20

mysql批量插入大量数据「建议收藏」

mysql批量插入大量数据 时间:2020年11月25日 今天遇到了一个批量插入大量数据任务,然后出于小白本能,直接for-each循环插入不就好了,于是手上开始噼里啪啦一顿操作,写好了从读取excel...三、method-3 第三种,通过原生的jdbc连接设置,然后打开批量处理的方式去处理数据 MySQL的JDBC连接的url中要加rewriteBatchedStatements参数,并保证5.1.13...以上版本的驱动,才能实现高性能的批量插入。...MySQL JDBC驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,批量插入实际上是单条插入,直接造成较低的性能。...但是第三种的效率是真强。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

3.7K10
领券