持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
前言
上篇我们学习了MySQL中的存储引擎。有兴趣的小伙伴可以阅读(MySQL学习-存储引擎(一))。
下面我们继续学习MySQL中的存储引擎。
存储引擎
MyISAM引擎
MyISAM引擎是主要的非事务处理存储引擎。
- MyISAM提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务、行级锁、外键,有一个毫无疑问的缺陷就是奔溃后无法安全回复。
- 是5.5之前默认的存储引擎。
- 优势是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用。
- 针对数据统计有额外的常数存储。故而count(*)的查询效率很高。
- 数据文件结构:
- 表名.frm存储表结构
- 表名.MYD存储数据(MYData)
- 表名.MYI存储索引(MYIndex)
- 应用场景:只读应用或以读为主的业务。
Archive引擎
Archive引擎用于数据存档。
Blackhole引擎
Blackhole引擎用于丢弃写操作,读操作会返回空内容。
CSV引擎
CSV引擎用于存储数据时,以逗号分隔各个数据项。存储后的结果,可以使用Excel等电子表格应用程序读取,甚至写入。
Memory引擎
Memory引擎是置于内存的表。采用的逻辑介质是内存,响应速度很快,但是当mysqld守护进程奔溃的时候数据会丢失。另外,要求存储的数据是数据长度不变的格式,比如,Blob和Text类型的数据不可用(长度不固定)。
- 主要特征:
- 同时支持哈希索引和B+树索引。
- Memory表至少比MyISAM表要快一个量级。
- Memory表的大小是受到限制的,表的大小主要取决于两个参数,分别是max_rows和max_heap_table_size。其中,max_rows可以在创建表时指定,max_heap_table_size的大小默认为16MB,可以按需要进行扩大。
- 数据文件与索引文件分开存储。
- 确定:其数据易丢失,生命周期短。基于这个缺陷,选择Memory引擎时需要特别小心。
- 使用场景:
- 目标数据比较小,而且非常频繁的进行访问,在内存中存放数据,如果太大的数据会造成内存溢出。可以通过参数max_heap_table_size控制Memory表的大小,限制Memory表最大的大小。
- 如果数据是临时的,而且必须立即可用得到,那么就可以放在内存中。
- 存储在Memory表中的数据如果突然间丢失的话也没有太大的关系。
今天先学习到这里,明天继续。