我有一个网站使用的数据库,让我们说"site1“。我计划将另一个网站放在同一服务器上,也将使用"site1“的一些表。
因此,我应该使用三种不同的数据库,如"site1“(用于第一站点特定数据)、"site2”(用于第二站点特定数据)和"general“(用于公共表)。其中在数据库general与site1和site2之间将有join语句。或者我应该把所有的表放在一个数据库中?
哪一项是最佳实践?在每种情况下性能有何不同?我正在使用MySQL。那么,尤其是对于MySQL,情况如何呢?
先谢谢你...
发布于 2013-05-15 19:15:53
从性能的角度来看,这不会有任何区别。只要将索引放在适当的位置,您就不会注意到您使用的是单个DB还是多个DB。
除了性能之外,我还能想到两个小问题: 1.不能跨DB使用外键。2.在DB中根据使用率或应用程序对表进行分区,可以帮助您轻松管理权限。
发布于 2011-05-14 00:03:11
我可以从最近的亲身经历中说出来。我在一些PHP代码中有一些旧的mysql查询,它们在相对较小的数据库中工作得很好,但随着它的增长,查询变得越来越慢。
我让freeradius在自己的数据库中运行mysql,以及我编写的另一个管理php应用程序。freeradius表大于150万行。我试图将我的应用程序数据库中的表连接到freeradius数据库。我可以肯定地说,150万行太多了。运行一些查询完全锁定了我的应用程序。我最终不得不重写我的php应用程序的一些部分,以不同的方式做事情(即不连接来自不同数据库的两个表)。我还在一些关键字段上为radius记账表建立了索引,并优化了一些查询(mysql EXPLAIN语句对此很有帮助)。现在事情要快得多了。
除非真的真的有必要,否则将来我肯定会犹豫是否要连接来自不同数据库的两个表。
https://stackoverflow.com/questions/3259530
复制相似问题