向服务器添加大量记录
我们有一个电子商务系统,我们有独立的库存系统。我们使用php和mysql。我们需要将库存详细信息提供给电子商务服务器。我们有大约7500条记录每1小时推送到服务器。我们在电子商务系统上创建了一个api,通过它我们添加了库存。但是,由于两台服务器位于不同的位置,它正在耗费时间。有没有更快的方法可以将此库存推送到服务器。即将记录添加到服务器上的特定表并且仅添加2列。向服务器添加大量记录
它们必须是很多MySQL的侧像的rsync,LOAD DATA INFILE选项,插入多行(如托马斯说)等
对于PHP端你可以使用Prepared Statements这应该会更快。在这里你只绑定params并在循环中执行。尽管查询定义不在循环中。 但仍然MySQL解决方案必须在你的情况下更有效。
您正在表中的每行执行一个API请求。这引入了很多开销的。
取而代之,请使用7.500行(不好,但仍比1/1更好)的请求或n
记录的多个请求。根据表现裁缝n
。
编辑
既然你从未被命名您的电子商务解决方案,我假设它的内部,你可以使用API鼓捣。如果不是这样,请告诉我。
在MySQL中,如果您在单个表中添加大量数据,则可以为多个ROWS
执行单个INSERT
。这种方式要快得多。
INSERT INTO inventory VALUES (2, 'Lamp'), (1, 'Bike'), (8, 'TV');
您可以找到文档中MySQL documentation约INSERT
优化。
该文档还显示了您可能需要考虑的替代解决方案。
@ Thomas Potaire - 问题在于服务器位于不同位置,我们无法直接触摸数据库。 – Hacker 2013-03-14 05:01:13
我明白了......所以你正在使用第三方解决方案在数据库中注入数据?你可以让他们提供一个允许单行插入多行的API调用吗?如果你没有任何访问数据库的权限,那将非常困难.. – 2013-03-14 06:24:57
平面文件能工作吗? – Leeish 2013-03-14 04:40:19
这个导入API的工作原理是什么?你能澄清吗? – 2013-03-14 04:42:05
@Thomas Hambach - api是一个简单的插入表。所以我们必须循环访问尽可能多的记录。 – Hacker 2013-03-14 04:45:12