首页
学习
活动
专区
圈层
工具
发布

MySQL批量插入数据库实现语句性能分析

允许我们在一条sql语句中批量插入数据,如下sql语句: INSERT INTO example (example_id, name, value, other_value) VALUES...第二种方法:使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13 23:04:00 ,一共8分13秒 ,代码如下: echo date("H:i:s"); $...SQL语句:将SQL语句进行拼接,使用 insert into table () values (),(),(),()然后再一次性插入,如果字符串太长,   则需要配置下MYSQL,在mysql 命令行中运行...:set global max_allowed_packet = 2*1024*1024*10;消耗时间为:11:24:06 11:25:06;   插入200W条测试数据仅仅用了1分钟!...->query($sql);   最后总结下,在插入大批量数据时,第一种方法无疑是最差劲的,而第二种方法在实际应用中就比较广泛,第三种方法在插入测试数据或者其他低要求时比较合适,速度确实快。

4.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

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

    5.4K20

    【MySQL】插入优化篇——(少量插入数据优化&批量插入数据load指令)

    values(1,'Tom'),(2,'cat'),(3, jerry'); 【1】需要大批量插入数据——load指令 如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用MVSQL...数据库提供的load指令进行插入。...本地磁盘文件中的数据,通过load直接加载到数据库表结构中 操作如下: #客户端连接服务端时,加上参数--local-infile mysql --local-infile -u root -p #设置全局参数...批量处理:对于大量的插入操作,将它们封装在一个事务中可以显著提高性能,因为数据库只需在事务结束时进行一次磁盘写入操作,而不是每次插入都写入。...3.主键顺序插入 在大多数数据库系统中,如表数据是使用B树(或其变种如B+树)这样的数据结构进行索引的。 顺序插入可以减少 页分裂 相应博客传送门

    2.1K10

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

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

    6.7K21

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

    业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入 那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?...向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率 看来这个问题不止我一个人苦恼过。...几百万的数据,不可能查出来,做去重处理 说一下我Google到的解决方案 1、insert ignore into 当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。...item.mobileNumber} ) ON duplicate KEY UPDATE id = id 这里用的是Mybatis,批量插入的一个操作...这样在批量插入时,如果存在手机号相同的话,是不会再插入了的。

    4.2K20

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

    :需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入 那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?...向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率 看来这个问题不止我一个人苦恼过。...几百万的数据,不可能查出来,做去重处理 说一下我Google到的解决方案 1、insert ignore into 当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。...item.mobileNumber} ) ON duplicate KEY UPDATE id = id 这里用的是Mybatis,批量插入的一个操作...这样在批量插入时,如果存在手机号相同的话,是不会再插入了的。

    4.6K20

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

    一、前言 我们在操作大型数据表或者日志文件的时候经常会需要写入数据到数据库,那么最合适的方案就是数据库的批量插入。只是我们在执行批量操作的时候,一次插入多少数据才合适呢?...首先是查看当前数据库的版本,毕竟各个版本之间存在差异,脱离版本讲数据库就是耍流氓(以前没少耍啊): mysql> select version(); +------------+ | version()...一次到底插入多少才合适呢? 三、批量插入数据测试 开始测试,但是一开始插入多少是合适的呢,是否有上限?查询mysql手册,我们知道sql语句是有大小限制的。...这部分我的理解是mysql是要分配一定的内存给传过来的数据包使用,当批量插入的数据量到达一定程度之后,一次插入操作的开销就很耗费内存了。...参考淘宝的数据库日报:http://mysql.taobao.org/monthly/2017/09/10/ 2、插入缓存 另外对于innodb引擎来说,因为存在插入缓存(Insert Buffer

    10.7K30

    面试官:MySQL 批量插入,如何不插入重复数据?

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

    2K20

    数据库批量插入这么讲究的么?

    测试环境: SpringBoot 2.5 Mysql 8 JDK 8 Docker 首先,多条数据的插入,可选的方案: foreach循环插入 拼接sql,一次执行 使用批处理功能插入 搭建测试环境`...不同的测试 1. foreach 插入 先获取列表,然后每一条数据都执行一次数据库操作,插入数据: @SpringBootTest @MapperScan("com.aphysia.springdemo.mapper...驱动在默认情况下会忽视 executeBatch() 语句,我们期望批量执行的一组 sql 语句拆散,但是执行的时候是一条一条地发给 MySQL 数据库,实际上是单条插入,直接造成较低的性能。...我说怎么性能和循环去插入数据差不多。 只有将 rewriteBatchedStatements 参数置为 true, 数据库驱动才会帮我们批量执行 SQL。...正确的数据库连接: jdbc:mysql://127.0.0.1:3306/test?

    1.5K20

    数据库批量插入这么讲究的么?

    测试环境: SpringBoot 2.5 Mysql 8 JDK 8 Docker 首先,多条数据的插入,可选的方案: foreach循环插入 拼接sql,一次执行 使用批处理功能插入 1搭建测试环境...2不同的测试 1. foreach 插入 先获取列表,然后每一条数据都执行一次数据库操作,插入数据: @SpringBootTest @MapperScan("com.aphysia.springdemo.mapper...驱动在默认情况下会忽视 executeBatch() 语句,我们期望批量执行的一组 sql 语句拆散,但是执行的时候是一条一条地发给 MySQL 数据库,实际上是单条插入,直接造成较低的性能。...我说怎么性能和循环去插入数据差不多。 只有将 rewriteBatchedStatements 参数置为 true, 数据库驱动才会帮我们批量执行 SQL。...正确的数据库连接: jdbc:mysql://127.0.0.1:3306/test?

    1.4K20
    领券