版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33862644/article/details/80354085
实测45秒:

原理:mysql插入数据库 插入时候并没有提交到mysql表里,在insert后面需要执行commit操作才会插入数据库

默认mysql是自动提交,如果关闭自动提交,在insert几十万数据在进行commit那么会大大缩短入库时间

建表
用户表
CREATE TABLE `user` (

`id` BIGINT (20),

`name` VARCHAR(20)

)ENGINE=INNODB;

日志表

CREATE TABLE `log` (

`id` BIGINT (20),

`msg` VARCHAR(20)

)ENGINE=INNODB;

ini_set('max_execution_time', '0');    //mysql执行时间
@mysql_pconnect("localhost","root","root") or die('connect failed');
@mysql_select_db("test") or die('select db failed');
//这一步很重要 取消mysql的自动提交
mysql_query('SET AUTOCOMMIT=0;'); mysql_query('set names utf8');
$begin = time();
$count = 1; for($i=1;$i<=1000000;$i++){
mysql_query("insert into user values($i,'name')");
//插入20W提交一次
if($i%200000=='0'){
$count++;
mysql_query("insert into log values($i,$count)");
mysql_query("commit");
}
} $end = time();
echo "用时 ".($end-$begin)." 秒 <hr/>";

php操作mysql,1分钟内插入百万数据的更多相关文章

  1. 如何在十分钟内插入1亿条记录到Oracle数据库?

    这里提供一种方法,使用 APPEND 提示,使得十分钟内插入上亿数据成为可能. -- Create table create table TMP_TEST_CHAS_LEE ( f01 VARCHAR ...

  2. SQL Server备份时间段内插入的数据依旧进入了备份文件?(转载)

    问 MSSql我在本机测试了下.为了延长备份时间,找个大的数据库.开始完整备份bak然后再此库新建表,并增添数据.备份结束.==================还原备份后,在还原的数据库内发现新增的表 ...

  3. Mysql使用存储过程快速添加百万数据

    前言 为了体现不加索引和添加索引的区别,需要使用百万级的数据,但是百万数据的表,如果使用一条条添加,特别繁琐又麻烦,这里使用存储过程快速添加数据,用时大概4个小时. 创建一个用户表 CREATE TA ...

  4. mysql/mariadb数据库在插入表数据时,ID竟然成奇数增加了?看完下面内容就知道怎么处理了。

    今天突然被问到一个问题,mysql数据库插入表数据时,设置了ID自增,但是插入数据后,ID却呈奇数增加,不是123456类型,而是13579形式,突然有点懵,研究了一会,发现是auto_increme ...

  5. mysql使其支持插入中文数据的办法

    1.找到安装的文件夹C:\Program Files (x86)\MySQL\MySQL Server 5.0 2.修改文件夹下的my.ini文件: 找到画黄线的这一字段 将后面改为utf8 这个过程 ...

  6. JDBC插入百万数据,不到5秒!

    java自带的批量操作,就可以很好的支持大量数据的处理.相比c#,简单很多.c#要使用oracle提供的ODP.NET,效率才很高,但是代码却很复杂.总之,在这方面,c#没得比.当然,这里的表是没加索 ...

  7. 【Oracle/Java】向三张表各插入百万数据,共用时18分3秒,平均每张表6分钟

    三张表DDL如下: CREATE TABLE tb01 ( "ID" ,) not null primary key, "NAME" NVARCHAR2() n ...

  8. mysql如何查询最新插入的数据

    在MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作为其他表的外键,形成“主从表结构”,这是数据库设计中常见的用法.但是在具体生成id的时候,我们的操作顺序一般是:先在 ...

  9. C#利用ODP.NET往oracle中高效插入百万数据

    由于工作的原因,要使用winform来处理大量的数据,但是c#自带的System.data.OracleClient效率不是很高,在网上找了很久,找到了ODP.NET,是oracle为c#提供的.貌似 ...

随机推荐

  1. continue & tag in GO

    Go语言中 continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用,在 continue 语句后添加标签时,表示开始标签对应的循环,例如: package mai ...

  2. C++ Multimap运用实例—查找元素

    C++ Multimap运用实例—查找元素 #include <map> #include <iostream> #include <algorithm> #inc ...

  3. Linux部署springboot项目,两种方式

    部署jar包(官方推荐) 在linux服务器上运行Jar文件时通常的方法是: $ java -jar test.jar 这种方式特点是ssh窗口关闭时,程序中止运行.或者是运行时没法切出去执行其他任务 ...

  4. Anaconda(一)

    一.Anaconda下载安装 Anaconda + Pycharm是知乎大佬们推荐的Python标配, Anaconda有众多版本,截至2019年11月的最新版Anaconda内置的是Python3. ...

  5. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之Grunt的使用简介

    什么是Grunt? Grunt,简而言之,就是运行在Node.js上面的任务管理器(task runner),其可以在任何语言和项目中自动化指定的任务.我们可通过npm来安装Grunt和Grunt插件 ...

  6. 快速改变文件hash值的方法

    查看哈希值命令 Linux : md5sum + 文件名 $ md5sum .png fe5c3f5ef1d207bc1b646911b463c907 .png Windows : certutil ...

  7. fedora清理旧内核

    先查看已安装的内核: rpm -qa|grep kernel 然后查看下当前在用的内核: uname -r 最后是删除内核: yum remove xxxx  

  8. 关闭正在执行的事务 Kill

    .模拟资源锁定 --开始事务BEGIN TRANSACTION--更新数据update Table_1 set FuncName=FuncName--等待1分钟WAITFOR DELAY '01:00 ...

  9. Oracle Spatial分区应用研究之六:全局空间索引下按县分区与按省分区效率差异原因分析

    1.实验结论 全局空间索引下,不同分区粒度之所有效率会有不同,差异并不在于SDO_FILTER操作本身,而在于对于数据字典表的访问次数上: 分区越多.表上的lob column越多,对数据字典表的访问 ...

  10. STL之iterator源码解析

    摘要 迭代器是一种行为类似指针的对象,本文介绍iterator与traits的关系,以及对traits内容的补充.包含stl_iterator.h的部分内容,并用c++11对其进行略微改写. iter ...