如何快速创build复杂的MySQL数据库的新实例?

我正在pipe理使用Amazon RDS作为我们的数据库服务器的企业Web应用程序。 我们的架构是当用户注册一个新帐户时,我们在RDS中为他们创build一个全新的数据库。

数据库有大约63个表,其中大部分都有索引,几乎都有外键约束。 目前我们正在通过执行大量的sql语句来创build每个新的数据库。 这需要平均57秒。

有没有人有任何想法,我怎么能做得更快或更有效?

您可能想尝试执行该查询作为“批量交易”来跳过validation检查。 被警告,这可以创build重复的索引,并打破一致性检查,如果你不小心。

没有办法提高这个速度,例如达到5秒。 我认为你必须使用一些队列逻辑,并在后台创build这样的BD。 对于客户来说,这只是:“正在创build数据库”

感谢大家的build议,我最终想出了一个很好的解决scheme,并希望在未来的读者分享它!

最终,我能够调整我们的数据库架构,合并/删除一些表格,这简化了整体devise,并减less了运行创build脚本所需的时间。 我还重新编写了我们的创build脚本,以便每个表执行一个查询,而不是三个查询(一个创build表,第二个更改表添加索引,第三个创build外键)。 这两件事情在运行脚本方面做了很大的改进,从平均大约50秒变成了8秒!

我们做的另一件对用户体验有很大影响的事情是创build一个独立运行在我们的服务器上的服务,它除了创build一个空的等待新用户注册的新数据库。 当用户注册时,他们的账户只是分配给下一个可用的空数据库。 我们已经设置好了,这样数据库创build者服务就不会超过我们实际帐户所需要的数量。 此devise减less了用户在注册1秒或2秒时等待的时间。 这一切都感觉有点“哈克”,但最终是一个巨大的改善!