gpt4 book ai didi

跨数据库与同一数据库内的 MySQL 性能

转载 作者:行者123 更新时间:2023-11-29 23:21:26 24 4
gpt4 key购买 nike

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

目前,我们在同一数据库中使用临时表来实现这一点。我们使用存储过程将某些数据从事件表中提取到临时表中,然后转储它们。然后,该转储会加载到目标数据库的临时表中,并且存储过程会合并到数据中。

这工作正常,但出于一些原因*,我正在考虑将其从暂存表移动到单独的暂存数据库。我只是担心这是否会对性能产生任何影响。

在几个不同配置的系统上很快尝试了这一点(只是作为思考练习),我得出了不同的结果。其中一个(数据不多,运行 MySQL 5.6)没有显示出真正的差异,甚至可能稍快一些。另一个(有更多数据,运行 MySQL 5.5)显示速度慢了大约 1.5 倍。

我很清楚,可能会有一些配置选项可能会影响这一点,我不是 DBA,因此我们将不胜感激。

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

*如果您对“原因”感兴趣,我可以在评论中告诉您

最佳答案

首先我要说的是,你不能像以前那样进行测试。

数据库,尤其是 MySQL,依赖于硬件。 MySQL 变量有许多可用的优化,可以将其从蜗牛变成公式 1。

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

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

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

关于跨数据库与同一数据库内的 MySQL 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27251398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com