MySQL中针对不同的功能需求提供了不同的存储引擎。所谓的存储引擎也就是MySQL下特定接口的具体实现。 
FEDERATED是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件。 
但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中(这一点很重要)。 
通过这个引擎可以实现类似Oracle 下DBLINK的远程数据访问功能。

1、使用show engines 命令查看数据库是否已支持FEDERATED引擎:

2、开启federated引擎
vi /etc/my.cnf
在[mysqld]之后添加:
federated

3、先来安装federated存储引擎
install plugin federated soname 'ha_federated.so';

mysql> install plugin federated soname 'ha_federated.so';
ERROR 1125 (HY000): Function 'federated' already exists
已经安装好了,只是没有启用

4、测试一下是否可以:
[root@rhel6Mysql02 ~]# mysqld_safe --federated &
[1] 2194
[root@rhel6Mysql02 ~]# 130620 18:12:28 mysqld_safe Logging to '/var/lib/mysql/rhel6Mysql02.err'.
130620 18:12:28 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

若提示mysqld_safe A mysqld process already exists,说明mysql的进程占用了log文件,将mysql服务停止即可:

root@iZ94j7vkg4wZ:~#mysqld_safe --federated &

root@iZ94j7vkg4wZ:~# 160726 20:00:07 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.
160726 20:00:07 mysqld_safe Logging to '/var/log/mysql/error.log'.
160726 20:00:07 mysqld_safe A mysqld process already exists

将mysql服务停止,然后再次运行即可:root@iZ94j7vkg4wZ:~#service mysql status

5、重启mysql服务后,用show engines 命令再次查看,已支持

6、使用FEDERATED建表语句如下:

CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]' 
创建成功后就可直接在本地查询相应的远程表了。

需要注意的几点:

1. 本地的表结构必须与远程的完全一样。 
2.远程数据库目前仅限MySQL 
3.不支持事务 
4.不支持表结构修改

本地虚拟表名与远程表名,可不相同。

经过测试,这个引擎的一些额外特点: 
1. 本地虚拟表与远程实体表之间是 TCP 长连接,并且是多个客户端利用的。所以不用担心因频繁建立连接带来的网络开销。 
2.  本虚拟表表与远程实体表之间的网络连接断开后,当对虚拟表发起查询时,它会尝试重新连接远程实体表,所以我们不用担心网络连接断开造成的永久中断问题。 
3.   如果无时间未对本地虚拟表作任何操作,虚拟表与实体表之间的连接将在远程主机的 wait_timeout 秒后自动断开,当对虚拟表发起查询时,连接又会重新建立。

一些注意事项: 
1. 对本地虚拟表的结构修改,并不会修改远程表的结构 
2.  truncate 命令,会清除远程表数据 
3.  drop命令只会删除虚拟表,并不会删除远程表

4.  不支持 alter table 命令

目前使用federated 最大的缺点: 
1. select count(*), select * from limit M, N 等语句执行效率非常低,数据量较大时存在很严重的问题,但是按主键或索引列查询,则很快,如以下查询就非常慢(假设 id 为主索引) 
select id from db.tablea where id >100 limit 10 ;

而以下查询就很快: 
select id from db.tablea where id >100 and id<150

2.  如果虚拟虚拟表中字段未建立索引,而实体表中为此字段建立了索引,此种情况下,性能也相当差。但是当给虚拟表建立索引后,性能恢复正常。

3. 类似 where name like "str%" limit 1 的查询,即使在 name 列上创建了索引,也会导致查询过慢,是因为

federated引擎会将所有满足条件的记录读取到本,再进行 limit 处理。

这几个问题已经严重影响了federated 在实际环境中的应用。

 

转载于:https://www.cnblogs.com/vickygu2007/p/5708937.html

mysql-Federated存储方式,远程表,相当于sql server的linked server相关推荐

  1. MySQL federated存储引擎--访问在远程数据库的表中的数据,而不是本地的表

    一.FEDERATED简介 federated就像他的名字所说"联盟",意思就是:把两个不同区域的数据库联系起来,以致可以访问在远程数据库的表中的数据,而不是本地的表. 二.安装F ...

  2. mysql federated引擎_MySQL 远程连接(federated存储引擎)

    概述 本文主要介绍通过federated存储引擎建立远程连接表 测试环境:mysql 5.6.21 步骤 开启federated存储引擎 先查看federated存储引擎存储引擎是否启用 SHOW E ...

  3. Mysql不同存储引擎的表转换方法

    Mysql不同存储引擎的表转换方法 1.Alter table 直接修改表的存储引擎,但是这样会导致大量的系统开销,Mysql为此要执行一个就表向新表的逐行复制.在此期间,转换操作可能会占用服务器的所 ...

  4. 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...

    在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...

  5. Sqlcmd连接SQL方式(远程机器直接查询SQL)

    Sqlcmd连接SQL方式(远程机器直接查询SQL) 有时我们不想登录SQL服务器去查询数据库,那么我们怎么做呢? 1, SQLCMD命令:首先你的本地机器的域登录名必须有访问远程SQL数据库的权限 ...

  6. Case:MySQL Federated存储引擎引起的慢SQL优化

    这个案例并不是我遇到的,但是我的工作生产环境中有使用到federated存储引擎,所以记录一下. 优化前 有一条SQL部分截取内容如下,执行约268秒才能出结果: 优化后 从这条SQL的执行计划中可以 ...

  7. 万亿级企业MySQL海量存储分库分表设计实践

    互联网业务往往使用MySQL数据库作为后台存储,存储引擎使用InnoDB.我们针对互联网自身业务特点及MySQL数据库特性,讲述在具体业务场景中如何设计表和分表.本文从介绍MySQL相关基础架构设计入 ...

  8. 浅谈 MySQL 的存储引擎(表类型)

    什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其实是 ...

  9. 浅谈MySql的存储引擎(表类型)

    转载自 http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html 什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体 ...

最新文章

  1. 走近NAP功能 全面了解Vista系统安全机制
  2. 将pcre、zlib等包编译进nginx里去(转)
  3. 运维小姐姐说这篇Consul集群和ACL配置超给力(保姆级)
  4. 每日一笑 | 为什么椅子总是最乱的?
  5. chrony软件使用说明
  6. 【Level 08】U06 Good Feeling L4 The surprising event
  7. 12. 指针、句柄、引用的区别
  8. Enjin ERC-1155和游戏多重宇宙
  9. 几个同步盘的使用体会
  10. Python-Pandas基础
  11. APP推广关键词的怎么选词?
  12. STM32F103_study59_The punctual atoms(Input capture experimentInput to capture experimental theoreti)
  13. 【论文阅读】Pyramidal Convolution:Rethinking Convolutional Neural Networks for Visual Recognition
  14. ARM Uboot经历——Uboot初始化代码解析
  15. 第十一届蓝桥杯省赛:纪念日
  16. 钱与情,钱与人,钱与命
  17. 关于猎聘网投递简历后的“已储备”状态
  18. 节日营销方案:你值得关注的6个策略!
  19. 力扣刷题笔记:1438. 绝对差不超过限制的最长连续子数组(滑窗模板题,选择有序列表SortedList()数据类型就不会超时)
  20. 黑苹果驱动神器Hackintool 3.4.4中文版

热门文章

  1. python cpython关系_第3篇:CPython内部探究:PyASCIIObject的初始化
  2. 华三服务器怎么设置系统启动模式,H3C 开局设置
  3. 网银系统服务器架构设计,网上银行建设架构精选.pdf
  4. python包括几种数据类型_简单谈谈Python中的几种常见的数据类型
  5. html css移动form表单位置,表单form的研究
  6. r语言做绘制精美pcoa图_R语言统计与绘图:绘制QQ图
  7. openssl java aes_Java AES算法和OpenSSL配对
  8. button layui 点击事件_Layui 带多选框表格监听事件以及按钮自动点击写法实例
  9. vmware + centos6设置桥接模式
  10. 姚期智:人工智能存在三大技术瓶颈