`
AllenHU0320
  • 浏览: 82774 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MEMORY,CSV,ARCHIVE,BLACKHOLE,MERGE,FEDERATED存储引擎

 
阅读更多

MEMORY存储引擎:

(system@localhost) [mysql]> create table t_mem1(id int) engine=memory;

MEMORY存储引擎的表只拥有一个独立的磁盘文件,扩展名为.frm,用来存储表结构的定义。

MEMORY引擎表能够使用的最大内存空间不超过max_heap_table_size系统变量设定的值,该变量默认情况下是16MB

 

CSV存储引擎:

(system@localhost) [mysql]> create table t_csv1(id int not null default 0,v1 varchar(20) not null default '') engine=csv;

(system@localhost) [mysql]> insert into t_csv1 values (1,'a');

(system@localhost) [mysql]> insert into t_csv1 values (2,'b');

CSV存储引擎因为自身文件格式的原因,所有列必须强制指定not null,另外CSV引擎也不支持索引和分区。CSV引擎表也会包含一个表的结构定义文件,扩展名为.frm,还会创建一个扩展名为.CSV的数据文件。还有一个同名的元信息文件,扩展名为.CSM,用来保存表的状态及表中保存的数据量。可以使用CHECK TABLEREPAIR TABLE命令进行检查和修复。CHECK语句会检查CSV文件中分隔符是否合法,分隔列的数量与表定义中是否相同。发现不合法的行,就会抛出错误。用REPAIR语句执行修复时,会尝试从当前CSV中复制合法数据,清除不合法的数据。需要注意,修复时只要发现文件中有损坏的记录行,那么之后的数据也就全部丢失,不管这中间是否会有合法的数据

[root@mysql1 mysql]# ls -l t_*

-rw-rw----. 1 mysql mysql   35 Jul  4 09:14 t_csv1.CSM

-rw-rw----. 1 mysql mysql   12 Jul  4 09:14 t_csv1.CSV

-rw-rw----. 1 mysql mysql 8582 Jul  4 09:13 t_csv1.frm

 

ARCHIVE存储引擎:

ARCHIVE存储引擎使用的场景是归档,仅能支持insertselect语句。除了拥有标准的.frm结构定义文件外,还有一个扩展名为.arz的数据文件,执行优化操作时可能还会出现一个扩展名为.arn的文件。为什么需要ARCHIVE存储引擎?因为基于这种存储引擎的对象,能够将大量数据压缩存储,插入的列会被压缩,ARCHIVE引擎使用zlib无损数据压缩算法

(system@localhost) [mysql]> create table t_arch1 engine=archive as select table_catalog,table_name,column_name from information_schema.columns;

(system@localhost) [mysql]> insert into t_arch1 select * from t_arch1;

(system@localhost) [mysql]> show table status like 't_arch1';

 

BLACKHOLE存储引擎:

所有插入的数据都不会保存,BLACKHOLE引擎表永远保持为空。对应的物理文件只有.frm文件,只有表结构定义

 

MERGE存储引擎:

MERGE存储引擎实际上是将一组MyISAM表聚合在一起

(system@localhost) [mysql]> create table t_mys1 (id int not null auto_increment primary key,v1 varchar(20)) engine=myisam;

(system@localhost) [mysql]> create table t_mys2 (id int not null auto_increment primary key,v1 varchar(20)) engine=myisam;

(system@localhost) [mysql]> insert into t_mys1 (v1) values ('this'),('is'),('mys1');

(system@localhost) [mysql]> insert into t_mys2 (v1) values ('this'),('is'),('mys2');

(system@localhost) [mysql]> create table t_mer1 (id int not null auto_increment primary key,v1 varchar(20)) engine=merge union=(t_mys1,t_mys2);

(system@localhost) [mysql]> select * from t_mer1;

除了拥有存储表结构定义的.frm文件以外,还有一个扩展名为.mgr的文件。这个文件不保存数据,而是数据的来源地,即引用的MyISAM引擎表的列表。MERGE引擎表本身并不存储数据,它只起一个汇总作用。

 

FEDERATED存储引擎:

要访问远端的MySQL数据库实例中的对象,通过FEDERATED存储引擎实现。默认MySQL不支持该存储引擎,编译时需要执行CMake时附加-DWITH_FEDERATED_STORAGE_ENGINE选项,编辑/data/mysqldata/3306/my.cnf[mysqld]区块中增加一行federated,重启mysql

每个FEDERATED引擎都包括两个元素:

一个远端的MySQL数据库表,可以是目标端支持的任意类型的表

一个是本地的数据库表,该表结构应与目标端的表完全相同,本地只有.frm文件,不会保存具体的数据,另外表的定义信息中还会包括到目标端的连接信息

客户端访问FEDERATED表时,按照下列方式执行:

存储引擎检查FEDERATED表列以及关联的目标端对象的SQL语句

使用MySQL客户端API发送语句到远程端

远程端处理完语句,由本地端接收该语句生成的结果集

返回结果集,转换成FEDERATED引擎形式,返回给客户端

FEDERATED存储引擎支持SELECTINSERTUPDATEDELETETRUNCATE TABLE及索引,操作本地的表实际上都是要将数据发送至远端

远端表结构:

CREATE TABLE poll_vote(id int(10) not null auto_increment,

parent_id it(10) not null,

vote_count int(10) default 0,

vote_month int (10) not null,

primary key(id)) engine=InnoDB auto_increment=26020 default charset=utf8;

使用CONNECTION子句创建FEDERATED

CREATE TABLE poll_vote(id int(10) not null auto_increment,

parent_id it(10) not null,

vote_count int(10) default 0,

vote_month int (10) not null,

primary key(id)) engine=FEDERATED auto_increment=26020 default charset=utf8

connection=’mysql://hugc:hugc@192.168.1.202/hddoc/poll_vote’;

格式如下:

schema://user_name:password@hostname:prot/db_name/tbl_name

schema目前只支持mysql

使用CREATE SERVER创建FEDERATED

CREATE SERVER hddoc110

FOREIGN DATA WRAPPER mysql

OPTIONS (USER ‘hugc’,PASSWORD ‘hugc’,HOST ‘192.168.1.202’,PORT 3306,DATABASE ‘hddoc’);

CREATE TABLE poll_vote(id int(10) not null auto_increment,

parent_id it(10) not null,

vote_count int(10) default 0,

vote_month int (10) not null,

primary key(id)) engine=FEDERATED auto_increment=26020 default charset=utf8

connection=’hddoc110/poll_vote’;

 

 

 

分享到:
评论

相关推荐

    MySQL数据库:MySQL存储引擎.pptx

    MySQL 5.7支持的存储引擎有:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV和BLACKHOLE等。 可以利用语句:show engines; 查看系统所支持的引擎类型。;1.InnoDB存储引擎 InnoDB是事务型数据库的首选引擎...

    MySQL常用存储引擎功能与用法详解

    2. 非事务安全表:MyISAM、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等。 MySQL默认的存储引擎是MyISAM(5.7版本中默认为InnoDB)。 配置文件中设置默认存储引擎的参数:default-...

    MySQL课程之MySQL存储引擎入门

    MySQL 支持多种存储引擎,目前的存储引擎有 MyISAM 、 InnoDB 、 BDB 、 Memory 、 Merge 、 Archive 、 Federated 、 BLACKHOLE 、 Cluster/NDB 、 CSV 、 Example 等。其中, InnoDB 、 NDB 、 BDB 支持事务,其他...

    如何选择合适的MySQL存储引擎

    MySQL有多种存储引擎,MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

    MySQL 5.1中文手冊

    14. 插件式存储引擎体系结构 14.1. 前言 14.2. 概述 14.3. 公共MySQL数据库服务器层 14.4. 选择存储引擎 14.5. 将存储引擎指定给表 14.6. 存储引擎和事务 14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器...

    MySQL 5.1参考手册 (中文版)

    14. 插件式存储引擎体系结构 14.1. 前言 14.2. 概述 14.3. 公共MySQL数据库服务器层 14.4. 选择存储引擎 14.5. 将存储引擎指定给表 14.6. 存储引擎和事务 14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器...

    mysql官方中文参考手册

    14. 插件式存储引擎体系结构 14.1. 前言 14.2. 概述 14.3. 公共MySQL数据库服务器层 14.4. 选择存储引擎 14.5. 将存储引擎指定给表 14.6. 存储引擎和事务 14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器...

    MYSQL中文手册

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. ...

    MySQL 5.1参考手册中文版

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. ...

    MySQL 5.1参考手册

    14. 插件式存储引擎体系结构 14.1. 前言 14.2. 概述 14.3. 公共MySQL数据库服务器层 14.4. 选择存储引擎 14.5. 将存储引擎指定给表 14.6. 存储引擎和事务 14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器...

    MySQL5.1参考手册官方简体中文版

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    MySQL 5.1官方简体中文参考手册

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    mysql5.1中文手册

    使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串...

Global site tag (gtag.js) - Google Analytics