一、什么是存储引擎
存储引擎(表处理器)指表的类型,接收上层传下来的指令,存储数据,对表中数据进行提取或写入操作。

二、MySQL提供哪些存储引擎

默认存储引擎为InnoDB,支持事务,行级锁,支持外键
- 查看默认存储引擎
show variables like '%storage_engine%';- 修改默认引擎(还有建表时设置,配置文件设置)
set default_storage_engine=MyISAM;三、各引擎对照
1、InnoDB引擎
- 事务型引擎(对已提交的内容定型,未提交的回滚)
- 数据文件结构(.frm 存储表结构、.ibd 存储表数据及索引)MySQL8.0时将 表结构、索引和数据存放一个文件 .ibd中
- 占用更多磁盘空间保存 索引+真实数据,所以内存加载时占用也比较大
- 支持外键、行级锁(适合高并发场景)
2、MyISAM引擎
- MySQL5.5之前默认引擎,不支持(事务,行级锁,外键),系统奔溃无法安全恢复
- 数据文件结构(.frm 存储表结构、.MYD 存储数据、.MYI 存储索引)
- 只缓存索引,不缓存真实数据(索引+真实数据地址),处理速度快
- 表锁(不适合高并发)
- 应用只读应用或已读为主的业务
3、Archive(归档)引擎
- 仅仅支持插入和查询功能(插入后不能修改)
- 适合日志和数据采集(档案)类应用;适合储存历史记录的数据
- MySQL5.5后支持索引、拥有很高的插入速度,但是对查询支持较差
- 行级锁,支持自递增主键(AUTO_INCREMENT)
- 数据文件 .ARZ,使用zlib压缩库,实时压缩,用作仓库
- Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。当数据量非常大的时候Archive的插入性能表现会较MyISAM为佳,较小的空间占用也能在你移植MySQL数据的时候发挥作用。当你需要把数据从一台MySQL服务器转移到另一台的时候,Archive表可以方便地移植到新的MySQL环境,你只需将保存Archive表的底层文件复制过去
4、CSV引擎
- 不支持索引,可将csv文件作为MySQL表来处理
- CSV也可以作为一种 数据交换的机制 ,比如JSON、XML(Python中用的比较多)
- .csv文件可使用文本编辑器,execl直接查看
MySQL使用CSV引擎时,字段必须使用 NOT NULL,否则报错
create table test (id int NOT NULL,...) ENGINE = CSV;5、Memory 引擎
- 数据文件与索引分开存储
- 采用的逻辑介质为 内存,响应速度快,mysqld守护线程奔溃,数据丢失
- 要求存储数据长度不变,Blob与Text类型的数据不可用(长度不固定)
- 支持 哈希索引 和 B+树索引
- memory表大小受限,表大小取决于max_rows(自定义)与max_heap_table_size默认16MB两个参数
版权声明:本文为qq_45524787原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。