mysql跨库查询解决方案
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跨库查询解决方案相关推荐
- MYSQL跨库查询的优缺点
MySQL跨库查询是指在一个MySQL实例中,查询不同数据库之间的数据,其优缺点如下: 优点: 数据库之间可以相互独立,降低数据库之间的耦合性,便于数据库的维护和管理. 在一些需要使用多个数据库的应用 ...
- mysql ef 分布式事务_分布式事务系列--分布式跨库查询解决方案 mysql federated引擎的使用...
背景 在服务高度拆分,数据库不断细化切分的情况下,我们经常有连接多台数据库查询的需求,如果不断的把数据库连接的逻辑添加在代码中,那么这种耦合会越来越严重,这会给程序的拓展和维护带来很大的麻烦. mys ...
- 两不同服务器上的mysql跨库查询
业务场景:关联不同数据库中的表的查询 比如说,要关联的表是:机器A上的数据库A中的表A && 机器B上的数据库B中的表B. 这种情况下,想执行"select A.id,B.i ...
- mysql跨库查询 索引_MySQL中跨库查询怎么搞?
导读 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 在MySQL中跨库查询主要分为两种情况,一种 ...
- node mysql 跨库查询_nodejs 在mongodb在跨数据库之中如何进行关联起来查询,并且支持筛选关联表的条件进行查询...
"班级数据库": "mongodb://192.168.3.17/xxx "学生数据库": "mongodb://192.168.3.99/ ...
- 两台不同服务器上的mysql跨库查询(FEDERATED)
首先,你当前的mysql环境需要支持FEDERATED引擎; 然后执行 CREATE TABLE `table_name`(表结构) ENGINE = FEDERATED CONNECTION='my ...
- 分享三:mysql跨库查询
待续 转载于:https://www.cnblogs.com/Alight/p/4837952.html
- 微服务架构下,解决数据库跨库查询的一些思路
开局先总结一下:现在很多厂都进行了微服务的开发模式,但是呢,业务的拆分的时候如果存在交叉是一件非常头大的事情,所以大家写微服务尽量不要交叉的写,比如新增用户如果已经存在在userservice里面了那 ...
- 微服务跨数据库联合查询_微服务架构下,解决数据库跨库查询的一些思路
加关注,不迷路! 前言 在服务做微服务改造后,原先单库join查询已经不能满足要求,每个拆分的微服务对应一个数据库实例,而且部署在不同的服务器上,那么解决"跨库查询"就势在必行了. ...
- Mysql不同实例跨库查询数据解决方案
本章主要讲解查询不同实例跨库查询,可以参考如下: 场景:不同实例连表查询. 解决方案:在机器A上的数据库A中建一个表B. 采用的方式:基于MySQL的federated引擎的建表 前提条件:你的mys ...
最新文章
- 大学实习就要来了,买个性价比高的笔记本应付一下
- Linux基础知识入门测试
- 《http权威指南》读书笔记 二
- D - Silver Cow Party POJ - 3268
- POJ-2531 Network Saboteur 枚举||随机化
- Android adt 初步理解和分析(三)
- 深入源码理解.NET Core中Startup的注册及运行
- Google Adwords/SEO关键字策略之Google Webmaster Tool数据方法
- tomcat 404错误 原因_软件测试人员定位bug原因的10大妙招分享
- Django之Form组件补充
- [转载]Altium Designer 破解,避免局域网冲突的ad9.ini
- Java实现随机抽奖
- ZigBee-CC2530单片机 - 4路硬件定时器PWM输出
- Windows网络连接指示器,NCSI
- 怎样配置文件存储服务器,服务器搭建存储配置文件
- 山寨手机给正规手机仅仅是冲突吗?相互学习,正规国产机就不愁翻身。
- 一款开源好用的车辆管理系统源码,基于SSH框架和SaaS模式
- java 批量设置单元格边框,VC下设置Excel单元格的边框 (转)
- Java ArrayList add()方法与示例
- 融云根据关键字获取搜索聊天记录
热门文章
- windows图片查看器背景颜色更改
- 5G关键技术及应用、5G移动通信组网架构
- 2019就业率最高专业TOP20出炉,哪些专业最好找工作?
- python:利用opencv实现图片转视频,视频转图片
- java单点登录SSO教程(含源码和视频教程)
- 8051单片机驱动TM1620任意字符循环显示程序(详细注释版)
- 全国行政区划数据 - JSON
- Invalid bound statement (not found): com.wu.dao.BlogMapper.addBook错误
- 基于51单片机的红外计数器proteus仿真 LCD1602显示原理图程序设计
- OpenCV C++双目三维重建:双目摄像头实现双目测距