【问题标题】:Performance of querying across two mysql databases on the same server?跨同一服务器上的两个 mysql 数据库查询的性能?
【发布时间】:2011-03-14 12:58:21
【问题描述】:

与将这些数据库合并为一个相比,查询同一 MySQL 服务器上的两个(或更多)数据库是否会影响性能?

背景,我继承了对 Web 应用程序的维护,该应用程序将其数据拆分为三个不同的数据库,这些数据库在同一台服务器上运行,一个用于内容,一个用于用户和组信息,一个用于用户生成的数据。这很方便,例如它可以轻松设置权限,用户数据有些敏感,因此不需要知道的人不应访问它。但是,该应用程序的主要功能之一是为用户或组提供有关内容的进度报告。这意味着它必须查询两个或多个数据库才能生成报告。

这样做会不会降低性能?

【问题讨论】:

  • 否,但请检查是否在相似的数据字段类型上执行了 JOIN。类型不匹配会即时重铸,这会导致严重的性能损失。这显然不限于跨数据库查询,但在使用由不同团队管理的数据库时,我们会不断遇到这些不匹配问题。

标签: sql mysql performance


【解决方案1】:

没有。在 MySQL 中,“数据库”本质上只是目录,不会影响数据的存储或查询方式。

从查询执行的角度来看,查询不同数据库中的两个表与查询同一个数据库中的两个表相同。

【讨论】:

  • 我接受了这个作为正确答案,因为它直接回答了我的问题。然而,我觉得斯蒂芬的回答也有智慧。
【解决方案2】:

如果您尝试对每个数据库中的数据使用多个选择语句,这只会引入一个明显的问题。最好使用一些外键,然后使用单个连接查询来获取用户的数据及其关联的用户内容。您可以在 select join 语句中为您的表添加模式名称前缀。

示例与此类似:

SELECT a.user, b.user_content
    FROM database1.table1 AS a
    LEFT JOIN database2.table2 AS b
        ON a.user = b.user_id;

【讨论】:

    猜你喜欢
    • 2016-03-07
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多