什么是将数据从远程数据库导入本地数据库的最快方法

时间:2009-08-21 20:55:17

标签: ruby-on-rails performance

我当前的项目我从远程数据库中提取数据并在本地保存。在一些压力测试期间,我们看到写入数据库的可怕结果。为了给你一些观点:

  • 我们的压力测试做了大约9000次动作,节省了大约54,000条记录。 (1动作= 6条记录)
  • 根据6条记录,我指的是数据库中4个不同表中的6行。
  • Heroku花了15-20分钟写下所有这些记录。
  • 在当地,我还有45分钟还在写作。

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

我从遥控器中提取数据的方式是:

  • 查询远程
  • 将远程字段与本地字段匹配
  • 保存记录
  • 循环到下一条记录。

也许红宝石的速度更快?

1 个答案:

答案 0 :(得分:1)

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

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