Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 连接不同数据库中的表对性能的影响_Mysql_Database_Join_Cross Database - Fatal编程技术网

Mysql 连接不同数据库中的表对性能的影响

Mysql 连接不同数据库中的表对性能的影响,mysql,database,join,cross-database,Mysql,Database,Join,Cross Database,我有一个网站使用一个名为“site1”的数据库。我计划将另一个站点放在同一台服务器上,该服务器还将使用“site1”中的一些表 因此,我应该使用三种不同的数据库,如“site1”(用于第一个站点特定的数据)、“site2”(用于第二个站点特定的数据)和“general”(用于公共表)。其中,在常规数据库、site1和site2之间将有join语句。还是应该将所有表放在一个数据库中 最好的做法是什么? 在每种情况下表现如何不同? 我正在使用MySQL。那么MySQL的情况如何呢 提前感谢…我可以根

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

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

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


提前感谢…

我可以根据最近的个人经验来谈谈。我在一些PHP代码中使用了一些旧的mysql查询,这些查询在一个相对较小的数据库中运行良好,但随着数据库的增长,查询速度越来越慢

我让freeradius在自己的数据库中运行mysql,还有我编写的另一个管理php应用程序。freeradius表的行数大于150万行。我试图将我的应用程序数据库中的表连接到freeradius数据库。我可以肯定地说150万行太多了。运行一些查询会完全锁定我的应用程序。最后,我不得不重新编写我的php应用程序的某些部分来做不同的事情(即不连接来自不同数据库的两个表)。我还在一些关键字段上为radius记帐表编制了索引,并优化了一些查询(mysql解释语句非常有助于这一点)。现在一切都快多了


除非真的有必要,否则我肯定不会在将来连接来自不同数据库的两个表。

从性能角度看,不会有任何区别。只要将索引保持在适当的位置,您就不会注意到您使用的是单个DB还是多个DB

除了性能,我还可以想到两个小问题: 1.您不能跨DBs使用外键。
2.在数据库中根据使用情况或应用程序对表进行分区可以帮助您轻松地管理权限。

我是否正确地假设两个数据库都在同一台服务器上?是的。我已经尝试过连接不同数据库中的表。我的答案是假设所有的数据库都在同一个数据库服务器上。如果你把它们放在不同的数据库服务器上,你会看到性能下降。如果它们在同一台服务器上,你可以在MySQL中跨数据库使用外键。但是不知道如果它们在不同的服务器或其他DBMS上会发生什么情况。你确定不是因为数据库大小而导致的吗?即使两个表位于同一个db中,您也很可能看到了这种减速。