php 100万数据,关于批量插入数据之我见(100万级别的数据,mysql)
关于批量插入数据之我见(100万级别的数据,mysql)
~~~
$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 = 1000000;
// 测试选项
$num = 1;
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) {
//最后一次
if ($i%100000 == 0){
$values = "($i, 'testtest')";
$db->query("insert into `test` (`id`, `name`) values $values");
} else {
$values .= ",($i, 'testtest')";
$db->query("insert into `test` (`id`, `name`) values $values");
}
break;
}
if ($i%100000 == 0) {
//平常只有在这个情况下才插入
if ($i == 0){
$values = "($i, 'testtest')";
} else {
$db->query("insert into `test` (`id`, `name`) values $values");
$values = "($i, 'testtest')";
}
} else {
$values .= ",($i, 'testtest')";
}
}
} 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";
?>
~~~
php 100万数据,关于批量插入数据之我见(100万级别的数据,mysql)相关推荐
- sql server批量插入数据库的操作100万条数据
1.数据库中 首先创建表->连接数据库->通过循环插入数据 2.建立测试表 在这里插入代码[c-sharp] view plain copy --Create DataBase creat ...
- sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析
假定我们的表结构如下: CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCH ...
- linux批量es数据,Elasticsearch批量插入数据
Elasticsearch批量插入数据 使用bulk批量操作数据库 1. 创建批量操作文件 格式: {"index":{"_index":"home& ...
- mysql一次读取500条数据_mysql批量插入500条数据
表格结构如下 需求name和password字段,生成如下格式: 总共批量生成500个. 解决思路:可以用mysql 存储过程 如果linux环境下可以用shell 我们先测试第一种,用存储过程.DE ...
- pymysql单条插入数据和批量插入数据:
一.单条插入数据: #!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost" ...
- 安卓mysql插入数据_Android批量插入数据到SQLite数据库的方法
Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知.因此在Android中插入数据时,使用批量插入的方式 ...
- jdbc批量插入的4种方式【百万条数据插入只需几秒】
mysql数据库准备 #打开数据库test01; use test01; #创建表a,表a包含int型的id列.可变长度型的name[长度20个字符] create table a (id INT,N ...
- excel表格数据的批量插入
添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spri ...
- 读取excel表格并且解析数据进行批量插入
直接上代码 package ffcs.cn.peam.function.controller;import java.io.File; import java.io.IOException; impo ...
最新文章
- python学习第三天-Linux入门之二
- 解决Extjs中textarea不支持keyup事件的问题
- excel公式 某一个单元格等于另一个单元格的值_15个excel小技巧,简单易学,一看就会,收藏备用吧...
- ArrayList的实现原理--转
- 找出那个数字出现3次的数字
- 1148 Werewolf - Simple Version 甲级
- AndroidStudio_解决butterknife在module中使用BindView Attribute value must be constant---Android原生开发工作笔记229
- c#解决TCP“粘包”问题
- spring-security 学习参考网站
- 清华大学发布OpenNE:用于网络嵌入的开源工具包
- arraylist线程安全吗_面试官:用过ThreadLocal吗?它保证线程安全的原理是啥?
- php对接海康视频教程_手把手教你php对接海康api
- Android SystemServer 进程
- 《HarmonyOS开发 - 小凌派-RK2206开发笔记》第3章 应用开发
- android 苹果备忘录,你会不会用苹果备忘录?白白放弃这么逆天的功能,不如换安卓机!...
- 在UE5中创建一个受战锤启发的角色
- 虚幻4和Unity3D应该学哪个
- Python简单爬虫(以爬取豆瓣高分图书为例)
- 测试人员如何区分前端和后台BUG方法流程
- Linux系统 | vim配置