想象一下,您有一个多站点脚本,例如,如果同一件事有多个实例(如论坛托管)。如果使用 MySQL,最好为每个站点创建一组新的表,还是有一个带有 site_id 列的大表?
一张桌子当然更容易维护,但性能又如何呢?另外,如果我使用 Redis,答案会有所不同吗?
想象一下,您有一个多站点脚本,例如,如果同一件事有多个实例(如论坛托管)。如果使用 MySQL,最好为每个站点创建一组新的表,还是有一个带有 site_id 列的大表?
一张桌子当然更容易维护,但性能又如何呢?另外,如果我使用 Redis,答案会有所不同吗?
正如约翰所说,您不会看到拥有多个表的任何性能差异很大,索引会做得更好。
但是您可能会看到性能提升,因为表锁定将特定于该站点的论坛表,而不是锁定所有站点的单个论坛表。但是好的查询和架构是防止这些锁影响性能的更好方法。
您可以在同一数据库服务器上拥有多个数据库,每个站点一个数据库。这是有道理的,因为这意味着每个站点都将拥有独立的用户表和论坛表,然后每个站点都有自己的资源池。但是,如果单个用户将使用多个论坛并且现在必须有多个用户记录(以及任何其他不特定于论坛帖子的数据),则此重复数据。
您可以通过在使用它们的应用程序服务器附近(在网络意义上)放置完全不同的数据库服务器来减少延迟。但实际上,现在全国范围内的服务器响应 ping 需要不到十分之一秒,这对于家庭用户而言,对于托管服务提供商处的服务器来说可能要好一些。
所有这些都是没有意义的,除非您实际看到的使用超出了单个数据库中的单个表可以处理的范围。在你获得一些关于瓶颈在哪里的真实统计数据之前,不要试图修复那些你甚至不知道它们是否会破坏的东西。
停止试图超越您的 DBMS,您将不会赢得这场战斗。您的数据应该在逻辑上分成表格,而不是出于性能原因。
您所描述的实际上是试图重新发明索引的弱尝试。