1.第一种跨库查询,是在同一个mysql服务器下两个不同的数据库之间的联查,关系如下图

在同一个mysql服务器下,不同的两个数据直接加上库名就可以实现跨库查询了

select * from t_test1 t1, test2.t_test2 t2 where t1.id = t2.id


执行sql查询到一下结果

2.第二种跨库查询,是在两台不同服务器(物理服务器)上分别安装的mysql服务器,实现跨库查询,其实现原理类似一个虚拟映射,需要用到mysql的另一个存储引擎Federated,

   FEDERATED存储引擎访问在远程数据库的表中的数据,而不是本地的表。这个特性给某些开发应用带来了便利,你可以直接在本地构建一个federated表来连接远程数据表,配置好了之后本地表的数据可以直接跟远程数据表同步。实际上这个引擎里面是不真实存放数据的,所需要的数据都是连接到其他MySQL服务器上获取。

mysql默认没有开启federated存储引擎,需要在配置文件里面开启;

#在[mysqld] 下 添加 federated 然后重启mysql服务就可以了
[mysqld]
federated

如下图:

#输入命令查看引擎开启状态
show engines;

可以看到,已经开启了

然后就可在test1数据库上创建虚拟表了,将test2库上t_test2表映射到test1库上面

CREATE TABLE `t_test2` (`id` int NOT NULL,`name` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb3 COMMENT='远程测试表t_test2' CONNECTION='mysql://root:123456@127.0.0.1:3306/test2/t_test2' ;
/**CONNECTION='mysql://root:123456$@127.0.0.1:3306/test2/t_test2' 这个配置是关键
root:代表远程数据库的用户
123456:代表远程数据的密码
127.0.0.1:代表远程数据库的ip地址,域名也可以
test2:代表远程数据库的数据库名称
t_test2:代表远程数据库中的哪一张表
**/

执行sql语句
可以看到创建了一张t_test2的表,这张表其实不存在只是一个远程的映射而已
可以看到使用FEDERATED引擎
表创建完成后就可以写sql了

select * from t_test1 t1, t_test2 t2 where t1.id = t2.id

可以看到执行结果

federated使用注意事项:1.本地创建的表名必须在远程服务器存在,创建的字段也必须是远程表中的字段,可以比远程表的字段少,但是不能多,本地存储引擎选择
2.对本地虚拟表的结构修改,并不会修改远程表的结构
3.truncate 命令,会清除远程表数据
4.drop命令只会删除虚拟表,并不会删除远程表
5.select count(*), select * from limit M, N 等语句执行效率非常低,数据量较大时存在很严重的问题,但是按主键或索引列查询,则很快,如以下查询就非常慢(假设 id   为主索引)select id from db.tablea where id >100 limit 10 ;

mysql跨库查询解决方案相关推荐

  1. MYSQL跨库查询的优缺点

    MySQL跨库查询是指在一个MySQL实例中,查询不同数据库之间的数据,其优缺点如下: 优点: 数据库之间可以相互独立,降低数据库之间的耦合性,便于数据库的维护和管理. 在一些需要使用多个数据库的应用 ...

  2. mysql ef 分布式事务_分布式事务系列--分布式跨库查询解决方案 mysql federated引擎的使用...

    背景 在服务高度拆分,数据库不断细化切分的情况下,我们经常有连接多台数据库查询的需求,如果不断的把数据库连接的逻辑添加在代码中,那么这种耦合会越来越严重,这会给程序的拓展和维护带来很大的麻烦. mys ...

  3. 两不同服务器上的mysql跨库查询

    业务场景:关联不同数据库中的表的查询 比如说,要关联的表是:机器A上的数据库A中的表A && 机器B上的数据库B中的表B. 这种情况下,想执行"select A.id,B.i ...

  4. mysql跨库查询 索引_MySQL中跨库查询怎么搞?

    导读 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 在MySQL中跨库查询主要分为两种情况,一种 ...

  5. node mysql 跨库查询_nodejs 在mongodb在跨数据库之中如何进行关联起来查询,并且支持筛选关联表的条件进行查询...

    "班级数据库": "mongodb://192.168.3.17/xxx "学生数据库": "mongodb://192.168.3.99/ ...

  6. 两台不同服务器上的mysql跨库查询(FEDERATED)

    首先,你当前的mysql环境需要支持FEDERATED引擎; 然后执行 CREATE TABLE `table_name`(表结构) ENGINE = FEDERATED CONNECTION='my ...

  7. 分享三:mysql跨库查询

    待续 转载于:https://www.cnblogs.com/Alight/p/4837952.html

  8. 微服务架构下,解决数据库跨库查询的一些思路

    开局先总结一下:现在很多厂都进行了微服务的开发模式,但是呢,业务的拆分的时候如果存在交叉是一件非常头大的事情,所以大家写微服务尽量不要交叉的写,比如新增用户如果已经存在在userservice里面了那 ...

  9. 微服务跨数据库联合查询_微服务架构下,解决数据库跨库查询的一些思路

    加关注,不迷路! 前言 在服务做微服务改造后,原先单库join查询已经不能满足要求,每个拆分的微服务对应一个数据库实例,而且部署在不同的服务器上,那么解决"跨库查询"就势在必行了. ...

  10. Mysql不同实例跨库查询数据解决方案

    本章主要讲解查询不同实例跨库查询,可以参考如下: 场景:不同实例连表查询. 解决方案:在机器A上的数据库A中建一个表B. 采用的方式:基于MySQL的federated引擎的建表 前提条件:你的mys ...

最新文章

  1. 大学实习就要来了,买个性价比高的笔记本应付一下
  2. Linux基础知识入门测试
  3. 《http权威指南》读书笔记 二
  4. D - Silver Cow Party POJ - 3268
  5. POJ-2531 Network Saboteur 枚举||随机化
  6. Android adt 初步理解和分析(三)
  7. 深入源码理解.NET Core中Startup的注册及运行
  8. Google Adwords/SEO关键字策略之Google Webmaster Tool数据方法
  9. tomcat 404错误 原因_软件测试人员定位bug原因的10大妙招分享
  10. Django之Form组件补充
  11. [转载]Altium Designer 破解,避免局域网冲突的ad9.ini
  12. Java实现随机抽奖
  13. ZigBee-CC2530单片机 - 4路硬件定时器PWM输出
  14. Windows网络连接指示器,NCSI
  15. 怎样配置文件存储服务器,服务器搭建存储配置文件
  16. 山寨手机给正规手机仅仅是冲突吗?相互学习,正规国产机就不愁翻身。
  17. 一款开源好用的车辆管理系统源码,基于SSH框架和SaaS模式
  18. java 批量设置单元格边框,VC下设置Excel单元格的边框 (转)
  19. Java ArrayList add()方法与示例
  20. 融云根据关键字获取搜索聊天记录

热门文章

  1. windows图片查看器背景颜色更改
  2. 5G关键技术及应用、5G移动通信组网架构
  3. 2019就业率最高专业TOP20出炉,哪些专业最好找工作?
  4. python:利用opencv实现图片转视频,视频转图片
  5. java单点登录SSO教程(含源码和视频教程)
  6. 8051单片机驱动TM1620任意字符循环显示程序(详细注释版)
  7. 全国行政区划数据 - JSON
  8. Invalid bound statement (not found): com.wu.dao.BlogMapper.addBook错误
  9. 基于51单片机的红外计数器proteus仿真 LCD1602显示原理图程序设计
  10. OpenCV C++双目三维重建:双目摄像头实现双目测距