17

我有一个使用名为“site1”的数据库的网站。我计划在同一台服务器上放置另一个站点,该服务器也将使用“site1”中的一些表。

所以我应该使用三个不同的数据库,如“site1”(用于第一个站点特定数据)、“site2”(用于第二个站点特定数据)和“general”(用于公共表)。其中数据库general与site1和site2之间会有join语句。还是应该将所有表放在一个数据库中?

最佳做法是什么?每种情况下的表现有何不同?我正在使用 MySQL。那么 MySQL 的情况如何呢?

提前致谢...

4

2 回答 2

12

从性能的角度来看,不会有任何差异。只需保持索引到位,您就不会注意到您使用的是单个数据库还是多个数据库。

除了性能之外,我能想到的还有两个小含义: 1. 不能跨 DB 使用外键。2. DB中的表根据使用情况或应用程序进行分区,可以帮助您轻松管理权限。

于 2013-05-15T11:15:53.430 回答
3

我可以从最近的个人经历说起。我在一些 PHP 代码中有一些旧的 mysql 查询,它们在相对较小的数据库中运行良好,但随着它的增长,查询变得越来越慢。

我有 freeradius 在自己的数据库中运行 mysql 以及我编写的另一个管理 php 应用程序。freeradius 表大于 150 万行。我试图将我的应用程序数据库中的表连接到 freeradius 数据库。我可以肯定地说 150 万行太多了。运行一些查询完全锁定了我的应用程序。我最终不得不重新编写我的 php 应用程序的一部分来做不同的事情(即不加入来自不同数据库的 2 个表)。我还在一些关键字段上索引了半径记帐表并优化了一些查询(mysql EXPLAIN 语句非常有助于解决这个问题)。现在事情要快得多。

除非真的有必要,否则我将来肯定会犹豫加入来自不同数据库的 2 个表。

于 2011-05-13T16:03:10.940 回答