跨库联查

最近更新时间:2024-12-02 10:05:34

我的收藏
当您需要从多个实例和数据库中查询数据,或者将多个不同数据源中的数据表的结果合并在一起阅读时,可使用跨库联查能力,通过创建子空间、创建跨库联查任务,实现对多个数据库中数据的统一查询和处理,提高您的查询便捷性,降低操作难度。

实现逻辑

跨库联查通过 MPP(Massively Parallel Processing) 大规模并行处理引擎连接到已添加至 DMC 数据源的实例,当用户提交跨库查询请求后,经过 MPP 解析后分发到各个数据源执行,并将查询结果汇总合并,实现对多个数据库中数据的统一查询和处理。

1. 首先需要将待查询的数据库实例添加至数据源,再创建子空间和为子空间添加数据源。数据源支持不同类型的数据库实例,或同一数据库类型下不同实例的数据库。
2. 当用户提交一个跨库查询请求时,MPP(Massively Parallel Processing) 会解析 SQL 查询语句,并生成一个查询计划。
3. MPP 根据生成的查询计划执行查询,将查询任务分发到各个数据源的连接器,数据源的每个连接器会进行查询操作。
4. 查询结果会被传输回 MPP 集群,MPP 会将这些结果汇总。
5. MPP 将从各个数据源收集到的结果进行合并和处理,生成最终的查询结果返回给用户。
在结果合并过程中,MPP 会处理数据的去重、排序、聚合等操作。

影响说明

若跨库联查没有适当的过滤条件(例如,不设置任何过滤条件),可能会导致对源数据库进行全表扫描,这会增加源实例的 CPU 和 I/O 负载,对于大表影响可能会很显著,建议谨慎选择过滤条件避免全表扫描。
跨库联查需要从源实例中提取数据,若查询涉及大量数据,可能会消耗大量的网络带宽,这可能会影响其他应用程序的网络性能,建议谨慎选择过滤条件,同时评估现有源实例规格。
若多个用户同时使用跨库联查查询同一个源实例,可能会导致源实例资源竞争,例如 CPU、内存和 I/O 资源的竞争,从而影响整体性能,导致用户查询和写入的延迟增加,建议尽量避免对同一实例并行查询。

使用限制

目前跨库联查仅支持 SELECT 语句,具体请参见 跨库联查 SQL 语法介绍
当查询量较大时,QPS 限制可能会被限流排队。

前提条件

待查询的实例已添加至数据源中,具体操作请参见 创建数据源
若查询的实例是管控模式,仅支持对您有权限的库表进行查询。若需要查询更多库表,请先申请权限,具体操作请参见 权限申请

初次使用配置数据源

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 跨库联查
3. 请在页面单击选择数据源



4. 在弹出的对话框中选择数据源,单击确定



用户选择数据源后,该数据源将展示在共享空间的默认组内。




创建子空间

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 跨库联查
3. 在页面上方单击

,创建子空间。



4. 在弹出的对话框中,输入空间名称,选择数据源,单击确定
空间名称:仅支持长度小于 60 的数字、英文大小写字母、中文以及 _ - . / ( ) [ ]特殊字符。




跨库联查

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 跨库联查
3. 鼠标悬停至左侧空间列表栏的子空间所在行,单击

,选择 SQL 操作



4. (可选)设置查询参数。
4.1 在执行面板右侧单击设置。



4.2 在弹出的对话框中设置参数,设置完成后单击确定
查询字符集:跨库联查仅支持 utf8mb4。
执行超时时间:取值范围[10,600],默认为300。超过该时间的 SQL 将会被 Kill。
最大返回行数:取值范围[1,300],默认为100。
查询结果展示:可选择覆盖追加,默认为覆盖

5. 在执行面板进行跨库联查。
说明:
SQL 参考:从两个不同的数据库实例中的表中提取数据。连接了 dmc-6nw0olhu 实例的 db_1.table_01 表和 dmc-id567 实例的 db_2.table_02 表,匹配它们的 id 列,并筛选出 table_01.id 等于 1 的记录。最终,查询结果包括 table_01 表的 idname 列以及 table_02 表的 address 列。
SELECT table_01.id,table_01.name,table_02.address
FROM "dmc-6nw0olhu".db_1.table_01
JOIN "dmc-id567".db_2.table_02
ON table_01.id=table_02.id
WHERE table_01.id=1;
可在右侧我的命令 > 系统模板区域选择模板 SQL 语句并进行修改。

执行面板还支持以下操作。
查看 SQL 执行计划:在页面上方单击执行计划



SQL 格式优化:在页面上方单击格式优化



终止正在执行的 SQL 语句:单击执行后,在页面上方单击终止执行。



保存命令:在页面上方单击收藏,在弹出的页面中,输入名称,单击确定
可在页面右上方单击我的命令,选择我的收藏,查看已收藏的命令模板。

清空当前输入的 SQL 语句:在页面上方单击清空
6. (可选)单击导出数据,可导出执行结果。

配置数据源

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 跨库联查
3. 鼠标悬停至左侧空间列表栏的子空间所在行,单击

或单击

并选择配置数据源



4. 在弹出的对话框中选择数据源,单击确定




清空空间

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 跨库联查
3. 鼠标悬停至左侧空间列表栏的子空间所在行,单击

,并选择清空空间
说明:
清空空间只会清除当前空间已添加的数据源,不会对源数据库造成影响。

4. 在弹出的对话框中,单击确定


删除空间

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 跨库联查
3. 鼠标悬停至左侧空间列表栏的子空间所在行,单击

,并选择删除空间
说明:
删除空间只会清除当前空间,不会对源数据库造成影响。

4. 在弹出的对话框中,单击确定