2013-03-14 83 views
0

我们有一个电子商务系统,我们有独立的库存系统。我们使用php和mysql。我们需要将库存详细信息提供给电子商务服务器。我们有大约7500条记录每1小时推送到服务器。我们在电子商务系统上创建了一个api,通过它我们添加了库存。但是,由于两台服务器位于不同的位置,它正在耗费时间。有没有更快的方法可以将此库存推送到服务器。即将记录添加到服务器上的特定表并且仅添加2列。向服务器添加大量记录

+0

平面文件能工作吗? – Leeish 2013-03-14 04:40:19

+0

这个导入API的工作原理是什么?你能澄清吗? – 2013-03-14 04:42:05

+0

@Thomas Hambach - api是一个简单的插入表。所以我们必须循环访问尽可能多的记录。 – Hacker 2013-03-14 04:45:12

回答

1

它们必须是很多MySQL的侧像的rsync,LOAD DATA INFILE选项,插入多行(如托马斯说)等

对于PHP端你可以使用Prepared Statements这应该会更快。在这里你只绑定params并在循环中执行。尽管查询定义不在循环中。 但仍然MySQL解决方案必须在你的情况下更有效。

1

你能告诉我们瓶颈在哪里吗?你的API被数据库阻挡了吗?您在一次调用中通过API推送了多少项目?

+0

在一次通话中,只有1条记录被推送。 – Hacker 2013-03-14 04:45:36

1

您正在表中的每行执行一个API请求。这引入了很多开销的

取而代之,请使用7.500行(不好,但仍比1/1更好)的请求或n记录的多个请求。根据表现裁缝n

编辑

既然你从未被命名您的电子商务解决方案,我假设它的内部,你可以使用API​​鼓捣。如果不是这样,请告诉我。

1

在MySQL中,如果您在单个表中添加大量数据,则可以为多个ROWS执行单个INSERT。这种方式要快得多。

INSERT INTO inventory VALUES (2, 'Lamp'), (1, 'Bike'), (8, 'TV'); 

您可以找到文档中MySQL documentationINSERT优化。

该文档还显示了您可能需要考虑的替代解决方案。

+0

@ Thomas Potaire - 问题在于服务器位于不同位置,我们无法直接触摸数据库。 – Hacker 2013-03-14 05:01:13

+0

我明白了......所以你正在使用第三方解决方案在数据库中注入数据?你可以让他们提供一个允许单行插入多行的API调用吗?如果你没有任何访问数据库的权限,那将非常困难.. – 2013-03-14 06:24:57