mysql 视图view和FEDERATED引擎的一些理解

前言

如果想深刻的认识,以及百分之百确定知识的准确性,建议最好上官网去查看,网上太多的此类文章了。
官网地址-视图
官网地址-FEDERATED

视图

是一张虚拟的表,逻辑表,只有结构,本身不包含数据。相当于查询语句动作的一个快照。

主要特点:

1.字段脱敏,以及表字段权限控制。
2.对于使用者来说,底层使用的表是透明的,尤其是复合条件返回的结果集,对数据可以做一定的约束。
3.源表结构变化,影响较小,如主要是删除字段可能会有影响。
4.支持事务。
5.对于简单结构的视图,根据视图的一定约束是可以增删改数据的。
6.可跨库。

优点:

1.对数据管理员来说,安全。对使用者来说,简单。
2.表字段变化,除了删除字段可能会造成比较大的影响,其他影响较小。

缺点:

1.对于维护者来说,对于复杂的视图,不太好维护。尤其是多层视图嵌套的时候,当基表经常变更,对应复杂视图的变更会成为一种负担。
2.对于使用者透明也就意味着,在做非数据查询的操作时,可能会产生不少的报错。

FEDERATED

FEDERATED是其中一个专门针对远程数据库的实现。通过FEDERATED引擎创建的表只是在本地有表定义文件,物理数据文件则存在于远程数据库中。
现在用的也比较少,在新版本的mysql就默认不开启此引擎了,需要手动安装。
一般执行流程如下
1. 存储引擎将遍历FEDERATED表具有的每一列, 并构造一个引用远程表的适当SQL语句。
2. 该语句使用MySQL客户端API发送到远程服务器。
3. 远程服务器处理该语句,而本地服务器检索该语句产生的任何结果(受影响的行数或结果集)。
4. 如果该语句产生结果集,则每一列都将转换为该FEDERATED引擎期望的内部存储引擎格式, 并可用于将结果显示给发出原始语句的客户端。

特点:

1.可以增删改查数据。
2.本地的执行sql语句,发送到远程执行,远程返回特定的存储格式的结果集,返回的行存在内存中。
3.本身就是为访问远程库而生。

优点:

1.访问该引擎的表就像是访问本地表一样。比如这在我们写程序时,只需要指定一个数据库连接就可以了。
2.跨库,跨机房场景

缺点:

1.不支持事务。
2.不支持循环指向。
3.如果远程数据库发生任何更改,则可能会破坏本地表中数据的完整性。本地表必须手工重新创建。
4.如果是全表查询,或者无索引的查询,当数据量很大时可能会导致本地机器内存挂掉,对网络的资源的占用也会很高。

相关连接

1.视图的一些介绍
2.修改原表对视图的影响
3.详解视图
4.官网-create-view
5.官网-federated-description
6.官网-federated-usagenotes

你可能感兴趣的:(mysql)