1亿条数据批量插入 MySQL,哪种方式最快?

1 亿个数据点,1 7 4 ,7 5 6 毫秒。

JDBC批处理,事务开启,速度最快。

5 00,000 个项目,大约 5 秒。

Mybatis速度慢,7 到9 分钟。

JDBC没有事务,慢2 1 秒。

无事务的批处理,2 .1 秒。

批量交易,1 .9 秒。

差距很明显。

php批量导入带图片的excel到mysql?

上周,一个客户问我如何使用PHP导入和导出Excel和MySQL数据,特别是那些包含图像的数据,这让我很头疼。
来吧,我们来谈谈吧。

我们先来说说导入。
我自己遇到的陷阱是我没有提前定义导入Excel的格式。
想想看,Excel就是一团乱麻,直接看肯定不行。
首先要确定格式,比如哪个列对应哪个MySQL表的哪个字段。
最好要求用户在上传之前填写模板,或者至少将列的顺序和类型硬编码到代码中。

导入过程通常是这样的:用户选择要上传的文件 -> 你的后端接收到文件 -> 读取Excel内容(使用PhpSpreadsheet库更方便,别问我为什么,走过坑的人都会明白) -> 迭代每一行并将数据插入MySQL。
成功后不要忘记刷新当前列表页面,否则用户会感到困惑。

这里重点来了,Excel中有图片怎么办?这绝对是一个大坑。
通常将图像保存在服务器上,然后将图像路径存储在数据库中。
例如,2 02 3 年,我在上海的一个购物中心做一个项目。
每个产品都有一个图像,直接从Excel读取图像,下载到临时文件夹,然后保存到MySQL的路径。
导入后记得清理临时文件夹,不然服务器迟早会堵塞。

我们来谈谈出口。
相对来说比较简单,但是你可以不用费心。
首先,您需要定义要显示的 Excel 标题和字段。
然后封装数据,使用PhpSpreadsheet逐行写入。
在样式方面,您可以设置边框和字体颜色,使Excel看起来更专业。
例如,我已经在广州做了一份报告。
我将其导出到 Excel 并向我的老板展示。
我特意添加了浅蓝色背景和粗体标题。
我的老板甚至祝贺我。

部署环境尤为重要。
我强烈推荐使用 nginx+php-fpm。
为了什么?因为在处理大型 Excel 文件时性能尤其重要。
您需要调整Nginx配置,例如client_max_body_size,以防止用户上传数GB文件并直接导致服务器崩溃。
然后编辑php.ini并将max_execution_time和memory_limit设置得更大。
php-fpm 超时也需要调整,否则它将在处理完成之前终止。

比如我2 02 3 年在深圳做的一个项目,用户一次下载几百KB的Excel,服务器直接被封了。
后来我将Nginx的client_max_body_size设置为1 00M,php.ini的max_execution_time设置为3 00秒,php-fpm的超时设置为3 6 00秒,一切正常。
不要忘记测试它,不要因随机更改而导致服务器崩溃。

无论如何,这取决于你。
至于代码,每个库都有示例,你只需要按照它们修改即可。
最重要的是,你必须自己处理这些陷阱,没有捷径。