MySQL在数据库间的性能与在同一数据库内的性能

MySQL在数据库间的性能与在同一数据库内的性能,mysql,database,Mysql,Database,在我们的软件中,我们跨安装共享信息 目前,我们在同一数据库中使用暂存表来实现这一点。我们使用存储过程将某些数据从活动表拉入临时表,然后转储它们。然后,这个转储被加载到目标数据库的暂存表中,存储过程会合并到数据中 这很好,但出于几个原因*,我正在考虑将其从暂存表移动到单独的暂存数据库。我只是担心这是否会对性能产生影响 在两个不同配置的系统上很快地尝试了这一点(就像一个思维练习),我得到了不同的结果。一个(数据不多,运行MySQL 5.6)没有显示出真正的区别,甚至可能稍微快一点。另一个(数据量大得

在我们的软件中,我们跨安装共享信息

目前,我们在同一数据库中使用暂存表来实现这一点。我们使用存储过程将某些数据从活动表拉入临时表,然后转储它们。然后,这个转储被加载到目标数据库的暂存表中,存储过程会合并到数据中

这很好,但出于几个原因*,我正在考虑将其从暂存表移动到单独的暂存数据库。我只是担心这是否会对性能产生影响

在两个不同配置的系统上很快地尝试了这一点(就像一个思维练习),我得到了不同的结果。一个(数据不多,运行MySQL 5.6)没有显示出真正的区别,甚至可能稍微快一点。另一个(数据量大得多,运行MySQL 5.5)显示速度慢了约1.5倍

我很清楚,可能会有一些配置选项会影响这一点,我不是DBA,所以任何指针都将非常感谢

TL;DR 与在同一数据库中插入数据相比,在不同数据库(在同一服务器上)的表中插入数据可能会对性能产生什么影响。这取决于MySQL版本还是配置设置


*如果您对“原因”感兴趣,我可以在评论中告诉您,首先让我说您不能像以前那样进行测试

数据库和MySQL都依赖于硬件。MySQL变量的优化有很多,可以将它从蜗牛变成公式1

因此,您在不同的系统上进行测试,每个系统要么在不同的硬件上运行,要么包含不同的数据。从技术上讲,MySQL默认使用InnoDB存储引擎。默认情况下,InnoDB存储引擎将所有数据存储到单个文件中。因此,从“深入到核心”的角度来看,无论您使用的是表还是数据库,MySQL都不会真正在意,因为它会将其存储到同一个文件中。从那以后,我们就知道了文件是否是碎片(如果在机械磁盘上),以及许多其他有趣的细节,这些细节不能用一个单一的答案来回答

这就引出了下一个问题——数据库是用来存储结构化数据的。 数据库不是美化的文本文件。他们的存在是为了让我们可以让他们交叉检查数据,并为我们的问题提供有意义的结果。 这意味着我们以符合特定逻辑的方式设计数据库和表。如果将这些暂存表存储到数据库A中是有意义的,则将其存储。如果做其他事情是有意义的,那就做其他事情

从性能的角度来看,这在很大程度上取决于服务器的配置方式,从操作系统到MySQL变量,以及硬件(尤其是HDD)的配置方式。在不知道到底发生了什么的情况下,直到最后一个细节——没有人能告诉你“是的,它更快”,“不,它更慢”或“它是一样的”。如果他们这样做了,他们在撒谎。我们基本上缺乏所有可能的信息来确定哪种方法更好