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

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

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

该数据库有大约 63 个表,其中大多数都有索引,并且几乎所有表都有外键约束。目前,我们通过执行大量 SQL 语句来创建每个新数据库。这平均需要 57 秒。

有人知道我该如何更快或更有效地完成这项工作吗?

答案1

您可能希望尝试将查询作为“批量事务”执行以跳过验证检查。请注意,如果您不小心,这可能会创建重复索引并破坏一致性检查。

答案2

没有办法将此速度提高到例如最多 5 秒。我认为您必须使用一些队列逻辑并在后台创建此类 BD。对于客户来说,这将只是:“正在创建数据库”

答案3

感谢大家的建议,我最终想出了一个非常好的解决方案,并想在这里与未来的读者分享!

最终,我能够调整我们的数据库架构,合并/删除一些表,从而简化整体设计并减少运行创建脚本所需的时间。我还重写了我们的创建脚本,以便它对每个表执行一个查询,而不是三个查询(一个用于创建表,第二个用于修改表以添加索引,第三个用于创建外键)。这两件事确实大大改善了脚本的运行,从平均约 50 秒缩短到 8 秒!

我们做的另一件事对用户体验产生了很大的影响,那就是在我们的一台服务器上创建一项独立运行的服务,这项服务除了创建新的数据库外什么都不做,这些新数据库会一直处于空状态,等待新用户注册。当用户注册时,他们的帐户只会被分配到下一个可用的空数据库。我们已经设置了数据库创建服务,这样数据库创建服务就不会比我们实际的帐户需求提前 100 多个数据库。这种设计将用户注册时的等待时间缩短到了 1 到 2 秒。这一切感觉有点“老套”,但最终这是一个巨大的进步!

相关内容