Mysql插入很慢,找到了稍微快点的方法
MYSQL批量插入数据库实现语句性能分析
假定我们的表结构如下
代码如下 | |
CREATE TABLE example ( |
通常情况下单条插入的sql语句我们会这么写:
代码如下 | |
INSERT INTO example |
mysql允许我们在一条sql语句中批量插入数据,如下sql语句:
代码如下 | |
INSERT INTO example |
如果我们插入列的顺序和表中列的顺序一致的话,还可以省去列名的定义,如下sql
代码如下 | |
INSERT INTO example |
上面看上去没什么问题,下面我来使用sql语句优化的小技巧,下面会分别进行测试,目标是插入一个空的数据表200W条数据
第一种方法:使用insert into 插入,代码如下:
代码如下 | |
$params = array('value'=>'50'); |
最后显示为:23:25:05 01:32:05 也就是花了2个小时多!
第二种方法:使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13 23:04:00 ,一共8分13秒 ,代码如下:
代码如下 | |
echo date("H:i:s"); $connect_mysql->query('BEGIN'); |
第三种方法:使用优化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分钟!代码如下:
代码如下 | |
$sql= "insert into twenty_million (value) values"; |
最后总结下,在插入大批量数据时,第一种方法无疑是最差劲的,而第二种方法在实际应用中就比较广泛,第三种方法在插入测试数据或者其他低要求时比较合适,速度确实快。
Mysql插入很慢,找到了稍微快点的方法相关推荐
- jdbc 3种获得mysql插入数据的自增字段值的方法_JDBC 3种获得mysql插入数据的自增字段值的方法...
JDBC 3种获得mysql插入数据的自增字段值的方法. 1. Retrieving AUTO_INCREMENT Column Values using Statement.getGenerated ...
- jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...
数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...
- mysql插入大量数据总结
1 java实现 package cn.edu.nwsuaf.sheep2.utils;import java.sql.Connection; import java.sql.DriverManage ...
- mysql插入数据返回主键值_Mysql千万级别数据批量插入只需简单三步!
第一步:配置my.ini文件 文件中配置 bulk_insert_buffer_size=120M 或者更大 将insert语句的长度设为最大. Max_allowed_packet=1M Net_b ...
- 七种MYSQL插入数据后返回自增主键ID的方法
我们都知道,mysql中的insert插入之后会有返回值,返回的是影响的行数,也就是说,成功插入一条数据之后返回的是1,失败则返回0.那么,很多时候我们都想要得到最后插入的id值,下面七种方法均可,结 ...
- MySQL 插入数据时,中文乱码???问题的解决
在终端,mysql -u root -p 登录: show variables like 'character%'; 来查看当前数据库的相关编码集. client 为客户端使用的字符集. connec ...
- MySQL插入数据很慢优化思路
MySQL插入数据很慢优化思路 解决方法与思路 解决方法与思路 插入数据量非常大的场景 加大mysql配置中的bulk_insert_buffer_size,这个参数默认为8M bulk_insert ...
- mysql 批量数据插入很慢(kettle 输入输出组件) 性能优化办法
背景 最近在做数仓重构项目,遇到一些性能瓶颈,这里记录一下解决办法. 随着业务数据每天都在增加,几年前开发的etl任务开始跑不动了.大表一般是通过增量的方式插入,但是修复bug 或者每月/季度跑一次的 ...
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...
最新文章
- SecureCRT如何与Linux虚拟机进行关联
- mysql怎么用_面试官都是这样发问的,连环冲锋炮,看你怎么抵挡(上)
- openstack(Queens版) 安装FWaaS
- python输入10个学生的成绩储存在列表中_获得10名学生的平均成绩python
- [09]CSS 边框与背景 (上)
- MarkdownPad安装以及绘制 UML 图
- c++ 遍历所有点且距离最短_编程小白暑期进阶笔记41-C语言数据结构与算法图遍历的应用...
- 别再用Else语句写代码了!
- left join缺失右括号_LeetCode刷题实战31:最长有效括号
- DEDE内容页调用栏目的SEO标题、描述、关键字的方法
- android edittext不可复制_Android中使EditText只读的方法(可恢复编辑状态)
- java ide 的优劣_Java程序员的困惑 Java IDE到底怎么选
- 如何对西数硬盘固件进行逆向分析(下)
- AHP层次分析法具体操作
- 决策支持系统是什么?
- esp8266网页控制RGB灯颜色
- AcGiGeometry::text 自画实体输出文字实例
- Android 手机截屏
- Unity3D关于蓄力跳跃
- RCNN算法思想简单讲解概述————(究极简单的讲述和理解)
热门文章
- python将文本中的数据处理成图像(matplotlib)
- mysql sqlsugar_.net core +mysqlSugar(最为简单的增删改查)
- 重构——解决过长参数列表(long parameter list)
- LeetCode 二叉树、N叉树的最大深度与最小深度(递归解)
- rtmp协议分析(三次握手)
- php的create_function、function_exists判断函数是否存在
- php常量变量连接,PHP常量及变量区别原理详解
- HTML中的function函数命名,请问HTML function函数怎么定义和调用?
- c++指针总结(易混淆)
- 分布式是写出来的(二)