存储引擎
#查看mysql现在已提供的存储引擎
SHOW ENGINES;
#查看mysql当前默认的存储引擎
SHOW VARIABLES LIKE '%storage_engine%';
MySAM
Mysql 5.5之前默认的存储引擎
MyISAM存储引擎是由MYD(数据文件)和MYI(索引文件)组成
CREATE TABLE `testmysam` (
`id` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
适用场景:
非事务型应用(数据仓库,报表,日志数据)
只读类应用
空间类应用(空间函数,坐标)
由于现在 innodb 越来越强大,myisam 已经停止维护
(绝大多数场景都不适合)
InnoDB
Mysql 5.5以后版本默认存储引擎。frm:表结构文件;ibd:表数据和索引的文件。
Innodb是一种事务性存储引擎
完全支持事务的ACID特性
Redo Log和Undo Log
Innodb支持行级锁(并发程度更高)
CSV
以 csv 格式进行数据存储
所有列都不能为 null 的
不支持索引(不适合大表,不适合在线处理)
可以对数据文件直接编辑(保存文本文件内容)
create table mycsv(id int not null,c1 VARCHAR(10) not null,c2 char(10) not null) engine=csv;
insert into mycsv values(1,'aaa','bbb'),(2,'cccc','dddd');
vi /usr/local/mysql/data/mall/mycsv.CSV 修改文本数据
flush TABLES;
select * from mycsv;
create index idx_id on mycsv(id)
Archive
组成
以 zlib 对表数据进行压缩,磁盘 I/O 更少
数据存储在 ARZ 为后缀的文件中
特点:
只支持 insert 和 select 操作
只允许在自增 ID 列上加索引
Memory
文件系统存储特点
也称 HEAP 存储引擎,所以数据保存在内存中
支持 HASH 索引和 BTree 索引
所有字段都是固定长度 varchar(10) = char(10)
不支持 Blog 和 Text 等大字段
Memory 存储引擎使用表级锁
最大大小由 max_heap_table_size 参数决定
使用场景
hash 索引用于查找或者是映射表(邮编和地区的对应表)
用于保存数据分析中产生的中间表
用于缓存周期性聚合数据的结果表
Ferderated
特点
提供了访问远程MySQL服务器上表的方法
本地不存储数据,数据全部放到远程服务器上
本地需要保存表结构和远程服务器的连接信息
使用场景
偶尔的统计分析及手工查询