什么是存储引擎
存储引擎就是指表的类型以及在计算机中的存储方式,查看mysql存储引擎的指令:
show engines;
常见的存储引擎介绍
InnoDB
是mysql5.5版本之后的默认存储引擎,InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全,数据存储在磁盘上的。它是通过B+Tree结构对主键创建索引,然后叶子节点存储记录,如果没有主键,那么会选择唯一键,如果没有唯一键,那么会生成一个6位的row_id作为主键
使用该存储引擎创建表时,会创建两个文件
.frm
存放的是表结构
.ibd
存放的是数据文件和索引文件
MyISAM
是mysql5.5版本之前的默认存储引擎,MyISAM不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。数据存储在磁盘上的。MyISAM的索引文件和数据文件存放的地方不一样,MyISAM的叶子节点存放的是数据文件的地址。
使用该存储引擎创建表时,会创建三个文件
.frm
存放表结构
.MYI
存放索引数据
.MYD
存放实际数据
Memory
将数据存储到内存中,为查询和引用其他表数据提供快速访问。所有数据都存放在内存中,数据处理速度快,但是安全性不高,一断电所有数据都会消失。
常见存储引擎直观分析
InnoDB | MyISAM | Memory | |
---|---|---|---|
索引类型 | 聚簇索引 | 非聚簇索引 | |
事务 | 支持 | 不支持 | |
表锁 | 支持 | 支持 | |
行锁 | 支持 | 不支持 | |
外键 | 支持 | 不支持 | |
适合操作类型 | 大量insert、delete、update | 大量select | 大量select |
安全性 | 自动灾难恢复 | 发生宕机,难恢复 | 数据容易丢失 |
全文索引 | 5.6版本后支持 | 支持 | |
集群索引 | 支持 | ||
数据缓存 | 支持 | 支持 | |
索引缓存 | 支持 | 支持 | 支持 |
空间使用 | 高 | 低 | |
内存使用 | 高 | 低 | 中等 |