首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中处理大型数据

在php中处理大型数据
EN

Stack Overflow用户
提问于 2016-06-18 12:57:34
回答 2查看 4.9K关注 0票数 0

我试图在mls (PHRETS)之后将大量数据插入到db中。结果对象有大约4500到5000条记录,每个记录有450-475个键,它在某个时候(通常在6-7分钟之后)将数据插入db时给出"HTTP错误500内部服务器错误“,我想是因为服务器的时间限制,我要求服务器人员增加执行的时间限制,但是它还是会产生错误。

这是我被处决的过程

1)在mls中搜索属性

2)我尝试一次插入所有记录,使用内爆来节省执行时间

代码语言:javascript
复制
$qry=mysqli_query($link,"INSERT INTO `rets_property_res` VALUES implode(',', $sql)");

使用准备语句的-tried

我们能不能把这些数据存储在某个地方,然后再一次处理,或者我们可以加快处理速度,使所有的数据都在给定的时间框架内工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-18 15:53:02

实现这一目标的最快方法是抓取一个大块(数千行),将其发送到CSV,并执行负载数据信息。有些环境缺乏使用加载数据本地信息的能力.由于服务器设置导致的LOCAL部件。上面的链接还有一个指向的链接,该链接声明:

从文本文件加载表时,请使用LOAD DATA INFILE。这通常比使用INSERT语句快20倍。见14.2.6节,“加载数据信息语法”。

我发现这很容易成为事实。

当然,对于速度而言,比单个插入更慢但更好的是将多个插入与一条语句放在一起:

代码语言:javascript
复制
insert myTable (col1,col2) values ('a1','b1'), ('a2','b2'), ('a3','b3');

因此,在上面的示例中,有3行用一条语句插入。通常,为了速度,最好一次玩500到1000行(而不是3行)。这一切取决于您的字符串大小,基于您的架构,对于insert语句。

Security :您需要关注第2级sql注入攻击的可能性,尽管这看起来很遥远。但这是有可能的。

以上所有这些看起来都是微不足道的,但是对于一个轶事和UX痛苦的评论,我提供以下内容。我有一个c#应用程序,它可以从Stackoverflow中获取问题,并保存它们的度量标准。不是身体的部分,也不是答案,而是标题和许多计数和日期。我每次在数据库中插入1000个问题(或执行insert ignoreinsert on duplicate key update)。在将其转换为LOAD DATA INFILE之前,使用重复使用的预准备语句进行c#/mysql绑定需要花费大约50秒的时间。在将其转换为LOAD DATA INFILE (包括工作台的截断、csv写和insert语句)之后,每1000行大约需要1.5秒。

票数 1
EN

Stack Overflow用户

发布于 2016-06-18 13:02:41

通常,由于最大数据包大小限制 of MySQL (取决于每个插入中有多少数据),您无法一次插入5000行。

试着将它们插入较小的组,例如一次100次或更少。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37897221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档