set_time_limit(800);
$dsn = 'mysql:host=localhost;dbname=test';
$db = new PDO($dsn,'root','',array(PDO::ATTR_PERSISTENT => true));

//删除上次的插入数据
$db->query('delete from `test`');
//开始计时
$start_time = time();
$sum = 5000000;
// 测试选项
$num = 2;
/*
$values = '';
for ($i = 1; $i < $sum; $i++) {
$values .= "($i, 'testtest'),";
}
$values = trim($values, ',');
$db->query("insert into `test` (`id`, `name`) values $values");
*/

if ($num == 1){

// 单条插入
for($i = 0; $i < $sum; $i++){
$db->query("insert into `test` (`id`,`name`) values ($i,'tsetssdf')");
}
} elseif ($num == 2) {
// 批量插入,为了不超过max_allowed_packet,选择每10万插入一次
for ($i = 0; $i < $sum; $i++) {
if ($i == $sum - 1) { //最后一次
$time = time();
if ($i%10000 == 0){
$values = "('testtest', $time)";
$db->query("insert into `test` ( `name`, `ctime`) values $values");
} else {
$values .= ",('testtest', $time)";
$db->query("insert into `test` (`name`, `ctime`) values $values");
}
break;
}
if ($i%10000 == 0) { //平常只有在这个情况下才插入
if ($i == 0){
$time = time();
$values = "('testtest', $time)";
} else {
$values = trim($values, ',');
$db->query("insert into `test` (`name`, `ctime`) values $values");
$values = "($i, 'testtest')";
}
} else {
$time = time();
$values .= ",('testtest', $time)";
}
}
} elseif ($num == 3) {
// 事务插入
$db->beginTransaction();
for($i = 0; $i < $sum; $i++){
$db->query("insert into `test` (`id`,`name`) values ($i,'tsetssdf')");
}
$db->commit();
} elseif ($num == 4) {
// 文件load data
$filename = dirname(__FILE__).'/test.sql';
$fp = fopen($filename, 'w');
for($i = 0; $i < $sum; $i++){
fputs($fp, "$i,'testtest'\r\n");
}
$db->exec("load data infile '$filename' into table test fields terminated by ','");
}

$end_time = time();
echo "总耗时", ($end_time - $start_time), "秒\n";
echo "峰值内存", round(memory_get_peak_usage()/1000), "KB\n";

/*
* 1 批量个数尽量控制在10000以下
* 2 查询时 MyIASM 明显比 Innodb快
*/

参考

http://www.codeceo.com/article/mysql-insert-compare.html

最新文章

  1. 【搬砖】安卓入门(2)- Java开发编程基础--进制转换和运算符
  2. [转]crontab环境变量设置
  3. 异常:exception和error的区别
  4. 解决faststone capture在台式机上录制屏幕视频没有声音的问题
  5. 【原创】JPEG图像密写研究(二) 哈夫曼树的建立
  6. c++11新特性(4) lambda捕捉块
  7. C语言可变参数函数的编写
  8. jquery serialize 和 console 漫谈
  9. 使用Apache Spark 对 mysql 调优 查询速度提升10倍以上
  10. 模板引擎,中间件,spring AOP原理
  11. k64 datasheet学习笔记45---10/100-Mbps Ethernet MAC(ENET)之概述
  12. JMeter—后置处理器(十)
  13. 第一次Sprint
  14. PHPEXCEL xls模板导入,及格式自定义:合并单元格、加粗、居中等操作
  15. Django之MVC框架与MTV框架详解
  16. Java 中的锁
  17. 8 -- 深入使用Spring -- 4...5 AOP代理:基于注解的“零配置”方式
  18. Loadrunner安装详解
  19. mysql中的坑
  20. 外汇EA(LRY_FX_Robot_V5)

热门文章

  1. NoSQL数据库--简介
  2. linux xargs 命令详解
  3. 【ASP.NET Core】处理异常--转
  4. Visual Studio使用阿里云Code Git服务器的常见问题
  5. 用ruby调用执行shell命令
  6. Mybatis中分表插件shardbatis使用说明
  7. NPOI读取Excel官方demo
  8. Java:使用DOM4j来实现读写XML文件中的属性和元素
  9. iTem2 保持连接,解决ssh的&quot;Write failed: Broken pipe&quot;问题
  10. Spring框架学习之概述