我应该使用APC来缓存长期准备的SQL字符串

时间:2013-04-02 05:38:21

标签: php caching import dataset apc

这里有两个人。我正在开发一个项目(PHP / Postgres),我正在将中型csv文件加载到我们的系统中(5k - 100k行)。这些csv记录将插入到一个包含大约100列(其中7列组成主键)的表中。这些文件不保证包含唯一记录,并且需要根据需要对记录进行upsert。

我已经实现了an upsert similar to this,它使用预准备语句来减少运行时间,并使系统每秒加载大约800条记录。这对于较小的文件就足够了,但对于100k +行的文件则不然。

在分析我的代码时,我注意到花了大量时间来构建长sql预处理语句,因此我决定使用APC用户缓存来缓存它们,从而大大缩短了运行时间。我还使用预备语句来提高性能。 Here is approximately how I have implemented this.

以下是问题:

  1. 我是否应该积极地使用APC用户缓存来缓存任何可以不经常构建的特别大的构造?
  2. 是否有更有效的方法在100列100k行文件上执行upsert?
  3. 我可以以不同方式存储文件吗? (可能使用hstore批量存储除文件中7-8个更重要的列之外的所有列)
  4. 修改Here's the code including how the sql statements are constructed.

0 个答案:

没有答案