2009-08-21 29 views
1

我当前的项目我从远程数据库中提取数据并将其保存到本地。在一些压力测试中,我们在写入数据库时​​看到了可怕的结果。给你一些观点:什么是从远程数据库导入数据到本地数据库的最快方式

  • 我们的压力测试取得了约9000次的行动,可以节省大约54,000条记录。 (1行动= 6条记录)
  • 由6条记录,我的意思是在数据库的4个不同的表中的6行。
  • Heroku花了15-20分钟写下所有这些记录。
  • 在本地,我正在写45分钟。

我不确定什么是快/慢,但显然我们不能让网页像这样挂着。我的下一个想法是CRON的工作,但是Heroku只允许1小时工作。这将是一个开始,但我们最终可能需要更多。

我从远程拉低数据的方式是:

  • 查询远程
  • 与当地的领域
  • 保存记录
  • 遍历到匹配远程域下一个记录。

也许theres更快的方式与红宝石?

回答

1
  • 对于select语句,您是否使用了好的索引?
  • 你用db工具检查过它们(mysql描述或者查询计划在mssql等?)
  • 说到索引,如果你有太多它们会减慢插入。
  • 你也可以尝试并行运行,这可能会更快。
  • 您应该剖析您的代码,以确定究竟发生了什么。

还有其他方法可以做到这一点。所有的数据库都有一个批量导出实用程序:mysqldump/load data infile让人想起mysql。如果您只是将数据从一个数据库复制到另一个数据库,这绝对是首选方式。浏览应用程序肯定会很慢。

相关问题