MySQL 是全球最受欢迎的开源数据库之一,引擎有INNODB、TokuDB、sphinx、MyRocks、myisam、maria、memeory、archive、federated等等。其中:
INNODB,是mysql最流行的支持全事务的引擎,数据本身是用B-TREE来组织,即是庞大的B-TREE索引,所以在这点上,当数据量过大时,写入速度就会逐渐降低,因为每次写入都需要用一次IO来做索引树的重排;
TokuDB,拥有出色的数据压缩功能,如果您的数据写多读少,而且数据量比较大,强烈建议使用TokuDB,以节省空间成本;
sphinx,高性能SQL全文检索引擎,适合知识库的查询、检索
MyRocks,facebook MySQL的主分支,数据压缩,不支持分区,order by慢
myisam,mysql5.1之前的默认存储引擎
maria,基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。
memeory,数据全部放在内存中,速度比使用B-tree索引快
archive,这个引擎只允许插入和查询,不允许修改和删除。相当于拥有只读权限和写入权限。
federated、一个专门针对远程数据库的实现,只是在本地有表定义文件,数据文件则存在于远程数据库中。与oracle 中的数据链Dblink类似
(吹了这么多牛皮,笔者也不大懂,我们还是看正文怎么操作federated吧)
1、查看引擎是否安装
show engines;
没有的话,安装Federated,如果一开始安装mysql时没有安装,那需要重新安装mysql,安装完后修改配置文件,重启。
mysql> install plugin federated soname 'ha_federated.so';
2、使用Federated
Federated为YES之后,使用Federated建表语句如下:
CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'
name :mysql远程数据库的用户名 ;
pass : mysql 远程数据库的密码 :
location : 远程数据库的ip
port: 远程数据库的端口号
db-name: 远程数据库的数据库名
table-name: 远程数据库的表名
创建的表名和远程访问的表名可以不同,之所以在这里创建表,是因为这是一个虚拟的表,创建的本地的数据库库表只有数据结构,没有内容,当你查询、修改时操作的还是远程数据库的库表