本篇就记录两个存储引擎好了,别的以后有合适的再补充
InnoDB 引擎:
具备外键支持功能的事务存储引擎
MySQL从3.23.34a开始就包含InnoDB存储引擎。 大于等于5.5之后,默认采用InnoDB引擎 。
InnoDB是MySQL的 默认事务型引擎 ,它被设计用来处理大量的短期(short-lived)事务。可以确保事务
的完整提交(Commit)和回滚(Rollback)。
除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。
除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。
数据文件结构:
表名.frm 存储表结构(MySQL8.0时,合并在表名.ibd中)
表名.ibd 存储数据和索引
InnoDB是 为处理巨大数据量的最大性能设计 。
在以前的版本中,字典数据以元数据文件、非事务表等来存储。现在这些元数据文件被删除
了。比如: .frm , .par , .trn , .isl , .db.opt 等都在MySQL8.0中不存在了。
对比MyISAM的存储引擎, InnoDB写的处理效率差一些 ,并且会占用更多的磁盘空间以保存数据和
索引。
MyISAM只缓存索引,不缓存真实数据;InnoDB不仅缓存索引还要缓存真实数据, 对内存要求较
高 ,而且内存大小对性能有决定性的影响。
MyISAM 引擎:
主要的非事务处理存储引擎
MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM 不支持事务、行级
锁、外键 ,有一个毫无疑问的缺陷就是 崩溃后无法安全恢复 。
5.5之前默认的存储引擎
优势是访问的 速度快 ,对事务完整性没有要求或者以SELECT、INSERT为主的应用
针对数据统计有额外的常数存储。故而 count(*) 的查询效率很高
数据文件结构:
表名.frm 存储表结构
表名.MYD 存储数据 (MYData)
表名.MYI 存储索引 (MYIndex)
应用场景:只读应用或者以读为主的业务
其他引擎有:
1、Archive 引擎:用于数据存档
2、Blackhole 引擎:丢弃写操作,读操作会返回空内容
3、CSV 引擎:存储数据时,以逗号分隔各个数据项
4、 Memory 引擎:置于内存的表
5、Federated 引擎:访问远程表
6、Merge引擎:管理多个MyISAM表构成的表集合
7、NDB引擎:MySQL集群专用存储引擎
InnoDB 引擎和MyISAM 引擎对比