博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 批量插入500W 测试
阅读量:5163 次
发布时间:2019-06-13

本文共 1960 字,大约阅读时间需要 6 分钟。

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

转载于:https://www.cnblogs.com/yingjie13/p/9699070.html

你可能感兴趣的文章
Team Dipper
查看>>
软件需求与分析需掌握的内容
查看>>
构造函数初始化列表
查看>>
jQuery获取自身HTML
查看>>
(转)RedHat/CentOS安装和配置kerberos
查看>>
File类常见方法:
查看>>
Revolving Digits(hdu 4333)
查看>>
在 Azure 中的 Linux 虚拟机上使用 SSL 证书保护 Web 服务器
查看>>
安卓 自定义吐司样式
查看>>
自定义动画
查看>>
准备些一篇目前技术目前公司 使用技术的 解析
查看>>
Sturct类型装箱时会遇到的问题
查看>>
mybatis 在自动生成时设置不生成Example类
查看>>
如何将红色区域数据调用解密函数直接打印到输出控制台(例如:crt控制台)...
查看>>
React-AR概述
查看>>
踏上Salesforce的学习之路(一)
查看>>
json中拿到想拿的值
查看>>
C#使用Log4Net记录日志
查看>>
飞机大战项目
查看>>
JZYZOJ1383 [usaco2003feb]impster 位运算 最短路
查看>>