在这种情况下,我应该将大表分成较小的相同表吗?

时间:2013-05-08 14:45:49

标签: mysql performance optimization

想象一下,您有一个多站点脚本,例如有多个实例,如果相同的事情(如论坛托管)。如果使用MySQL,最好为每个站点创建一组新表,还是有一个带有site_id列的大表?

一张桌子当然更容易维护,但性能如何? 如果我使用Redis,那么答案会有所不同吗?

2 个答案:

答案 0 :(得分:0)

不要试图超越你的DBMS,你不会赢得这场战斗。您的数据应按逻辑划分为表格,而不是出于性能原因。

你所描述的实际上是试图重新发明一个指数的弱尝试。

答案 1 :(得分:0)

你不会发现任何表现与多个表有很大不同,正如约翰所说,索引会做得更好。

但是你可能会看到似乎是性能提升的原因,因为表锁将特定于该站点的论坛表,而不是锁定所有座位的单个论坛表。但是,良好的查询和体系结构是防止这些锁影响性能的更好方法。

您可以在同一个数据库服务器上拥有多个数据库,每个数据库对应一个站点。这种意义是有道理的,因为它意味着每个站点都有它的独立用户表以及论坛表,然后每个站点都有自己的资源池。但是,如果单个用户将要使用多个论坛并且现在必须具有多个用户记录(以及不特定于论坛帖子的任何其他数据),则此重复数据。

您可以通过在使用它们的应用程序服务器附近(在网络意义上)使用完全不同的数据库服务器来减少延迟。但实际上,现在全国各地的服务器需要不到十分之一秒的时间来响应ping,这对于家庭用户来说,对于坐在托管服务提供商处的服务器来说可能要好一些。

除非您实际看到超出单个数据库中单个表可以处理的用法,否则所有这些都没有实际意义。直到你有关于瓶颈所在的真实世界统计数据,不要试图解决你甚至不知道它们是否会破坏的事情。