【发布时间】:2011-11-24 16:34:48
【问题描述】:
我正在开发一个 Rails v2.3 应用。并使用 MySQL v5.1 作为我的数据库。
目前,在我的 Rails 应用程序中,我有一个 rake 任务(从 Helper 调用方法)用于执行多个 .sql 转储文件以从中导入数据模板数据库到我的development database。例如execute_dump("fill_all_tables.sql")。
.sql 文件如下所示:
TRUNCTE TABLE cars;
ALTER TABLE DISABLE KEYS
INSERT INTO cars (col1,col2,col3,...) VALUES SELECT (...) FROM template_db.cars WHERE...
ALTER TABLE ENABLE KEYS
OPTIMIZE TABLE
然后,我有一个 2nd rake 任务,它将运行一个脚本来创建一个新的(第 3 个)数据库,同时从同一个 模板数据库 导入数据但放入数据到新创建的3rd database。
因此,两个 rake 任务(或方法)都从同一个 模板数据库 导入数据,但放在 不同的数据库。 (一个用于开发数据库,另一个用于第三个数据库)。
我想让上述数据导入的事情并行发生。如何在 Rails 中实现?
附言
我的development database 和3rd database 在数据导入开始之前创建了相同的表。而且我的第一个 rake 任务会在数据导入后做更多的事情。
【问题讨论】:
-
这应该可以使用复制来解决
-
你能澄清一下任务是做什么的吗? “执行几个 .sql 转储文件以导入数据......”我不清楚。
-
@mosch ,执行 .sql 转储文件意味着执行 SQL 命令,其中所有命令都在一个 .sql 文件中。 execute_dump() 是做这件事的方法(运行所有 SQL 语句/命令)。
-
您能举例说明这些 SQL 文件中的内容吗?并行度取决于命令。并行化需要顺序的东西是很困难的。
-
那么是什么让您无法并行执行 SQL?
标签: mysql ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1