首页 > 数据库 >Mysql跨库操作

Mysql跨库操作

时间:2024-08-14 14:15:54浏览次数:10  
标签:跨库 数据库 Mysql Federated 实例 MySQL 操作 联查 id

在 MySQL 中,操作多数据源(例如从库 A 和库 B)进行联查的情况,可以分为以下两种场景:

A 库和 B 库在同一个 MySQL 实例

当 A 库和 B 库在同一个 MySQL 实例下时,可以直接使用跨库联查查询。示例如下:

SELECT A.column1, B.column2
FROM A.table1 AS A
LEFT JOIN B.table2 AS B
ON A.id = B.id;

因为 MySQL 实例本身已经能够处理这种跨库查询。只需要确保你在查询时使用了正确的库名和表名即可。

A 库和 B 库在不同的 MySQL 实例

当 A 库和 B 库在不同的 MySQL 实例下时,跨实例联查会更复杂,因为 MySQL 不直接支持跨实例的联查。你有以下几种方法来实现跨实例联查:

使用应用层合并

在应用层进行联查。首先从一个数据库中提取数据,然后在应用程序中处理和合并这些数据。例如:

1.	从 A 库中查询数据并将其存储在应用程序中。
2.	从 B 库中查询数据并将其存储在应用程序中。
3.	在应用程序中执行联查逻辑来合并数据。

使用中间数据库

可以将 A 库和 B 库中的数据导入到一个中间数据库中(例如将两个库的数据同步到一个新的数据库中),然后在这个中间数据库中进行联查。这个方法可能涉及数据同步或 ETL(提取、转换、加载)过程。

使用 Federated 引擎(有限支持)

MySQL 提供了 Federated 引擎,允许在不同的 MySQL 实例之间访问表。你可以在一个 MySQL 实例中创建一个 Federated 表,它映射到另一个 MySQL 实例中的表。这使得你可以通过 Federated 表进行跨实例查询。例如:

1.	在 A 库的 MySQL 实例中创建一个 Federated 表,它指向 B 库的表。
2.	使用这个 Federated 表进行联查。
CREATE TABLE federated_table (
    id INT(11) NOT NULL,
    column2 VARCHAR(255),
    PRIMARY KEY (id)
)
ENGINE=FEDERATED
CONNECTION='mysql://user:password@host:port/B_database/table2';

-- 然后执行联查
SELECT A.column1, B.column2
FROM A.table1 AS A
LEFT JOIN federated_table AS B
ON A.id = B.id;

总结

同一 MySQL 实例:可以直接使用 SQL 语法进行跨库联查。
不同 MySQL 实例:需要借助应用层合并、中间数据库或 Federated 引擎等方法来实现跨实例联查。
上游库可以访问的情况下尽量只读取且用redis缓存.
上游数据库不可以访问的情况下用接口交互.

标签:跨库,数据库,Mysql,Federated,实例,MySQL,操作,联查,id
From: https://www.cnblogs.com/aeolian/p/18358855

相关文章

  • 学习Java的日子 Day68 jQuery操作节点,Bootstrap
    jQuery1.jQuery操作DOMDOM为文档提供了一种结构化表示方法,通过该方法可以改变文档的内容和展示形式在访问页面时,需要与页面中的元素进行交互式的操作。在操作中,元素的访问是最频繁、最常用的,主要包括对元素属性attr、内容html、值value、CSS的操作1.1操作内容获取......
  • 代码随想录训练营day20|235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450
    二叉搜索树的最近公共祖先题目根据二叉搜索树的特性,它的公共祖先肯定是值夹在p和q之间的(满足此条件的第一个点)TreeNode*getroot(TreeNode*root,TreeNode*p,TreeNode*q){ if(rooot==NULL)returnNULL; if(root->val<p->val&&root->val<q->val){ returngetroot(r......
  • mysql 创建定时任务清理指定表
    一、创建定时任务1、确保MySQL的事件调度器已经开启。可以通过以下SQL命令检查是否开启:SHOWVARIABLESLIKE'event_scheduler';2、如果返回的值为OFF,则可以通过以下命令开启事件调度器:SETGLOBALevent_scheduler=ON;3、以下是一个删除your_table表中7天前数据的示例:......
  • H7-TOOL混合脱机烧录以及1拖4不同的通道烧录不同的程序操作说明(2024-08-07)
     【应用场景】原本TOOL的1拖4是用于同时烧录相同程序给目标板,但有时候一个板子上有多个不同的MCU,客户希望仅通过一个TOOL就可以完成对板子上多个MCU的烧录,也就是1拖4不同的通道烧录不同的程序,此贴为此制作。【实验目标】由于这个属于定制需求,需要简单修下目标文件,后面升......
  • 参加阿里云云消息队列 RabbitMQ 版动手操作,赠送博客园T恤
    这是8月份园子和阿里云的第3期推广合作,招募100人参加云消息队列RabbitMQ版动手操作,有效完成动手操作的前100人赠送1件原价79元的博客园T恤,如果不需要T恤,也可以选原价不高于79元的其他周边。活动官网:https://developer.aliyun.com/special/yunduanwendao/rabbitmq01参与步骤:1......
  • Magic-Api数据库插入操作汇总
    1.测试表准备--id非自增CREATETABLE`test_idms`(`id`varchar(32)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNOTNULL,`name`varchar(255)COLLATEutf8mb4_general_ciDEFAULTNULLPRIMARYKEY(`id`))ENGINE=InnoDB;--id自增CREATETABLE......
  • linux系统常见及常用的命令操作(进程管理、网络通信篇)
    ​​​前言本人是互联网新人,自己整理了一些工作中经常用到的Linux常用命令;一是为了让自己更加清晰认识,再一个希望能帮助到大家和未来的新人;编辑实属不易,轻喷,都是一字字打出来的;后续会慢慢调整编写模式;提示:以下是本篇文章正文内容,下面案例可供参考;只摘要部分命令选项,如需深......
  • linux系统常见及常用的命令操作(包管理、文件和目录操作)
    linux系统常见及常用命令(超详细:系统篇)-CSDN博客linux系统常见及常用的命令操作(进程管理、网络通信篇)-CSDN博客一、包管理、压缩解压缩:1.get-apt:用于处理软件包的安装、升级和删除        apt-get是Debian、Ubuntu系列Linux的包管理工具,用于处理软件包的安装、升......
  • matlab基础操作(七)
    41.重绘曲线  Exam:重绘波形y=sin(t)sin(9t)及其包络线。  >>plot(t,y1,'r:')  >>holdon  >>plot(t,y2,'b')  >>plot(t3,y3,'bo')  >>axis([0,pi,-1,1])  >>holdoff 42.利用hold绘制离散信号的波形......
  • 【MySQL】数据库约束和多表查询
    目录1.前言2.数据库约束2.1约束类型2.2 NULL约束2.3NUIQUE:唯一约束2.4 DEFAULT:默认值约束2.5 PRIMARYKEY:主键约束2.6FOREIGNKEY:外键约束1.7 CHECK约束3.表的设计 3.1一对一3.2一对多3.3多对多4.新增5.查询5.1聚合查询5.1.1聚合函数5.1.2 GROUPBY......