1 InnoDB
InnoDB面向联机事务处理(On-Line Tranaction Processing, OLTP),主要应用于传统关系型数据库,基本的日常事务处理.
InnoDB提供数据库的事务支持(ACID),实现了SQL标准的四种隔离级别,并提供行级锁和外键,设计目的是为处理大容量数据库系统,MySQL运行时InnoDB引擎在内存中建立缓冲池,用于缓冲数据和索引,但是该引擎不支持FULLTEXT(全文索引),并且不保存数据行数.
2 MyISAM
MyISAM面向联机分析处理(On-Line Analytical Processing, OLAP),主要应用于数据仓库系统,支持复杂的分析操作,侧重决策支持.
MyISAM不提供事务支持,行级锁和外键,锁级别为全表锁,当插入和更新数据时,会锁定全表,效率较低,但是资源消耗也相对小,支持全文索引.
MySQL5.1及之前的版本,MyISAM为默认引擎,之后默认引擎为InnoDB.
3 InnoDB和MyISAM比较
序号 | InnoDB | MyISAM | 备注 |
---|---|---|---|
1 | 事务 | 支持 | 不支持 |
2 | 外键 | 支持 | 不支持 |
3 | 索引 | 聚簇索引 | 非聚簇索引(辅助索引) |
4 | 数据行数 | 不保存具体行数 | 保存整体行数 |
5 | 锁粒度 | 最小为行级锁 | 最小为表级锁 |
6 | 删除表 | 按行删除 | 先drop表,后重建表 |
7 | 压缩性 | 难压缩 | 可以被压缩 |
8 | 跨平台性 | / | 较方便 |
9 | 存储形式 | 所有表都保存在同一个数据文件中,数据表的大小仅受限于操作系统文件大小,一般为2GB | 文件存储为三份,分别为表定义文件(.frm),数据文件(.MYD,MYData)和索引文件(*.MYI,MYIndex) |
4 引擎选择
序号 | 场景 | InnoDB | MyISAM |
---|---|---|---|
1 | 支持事务 | √ | |
2 | 绝大多数只读 | √ | |
3 | 读写频繁 | √ | |
4 | 数据恢复容易 | √ | |
5 | 默认 | √ |
【参考文献】
[1]https://www.jianshu.com/p/f6bb7088b3b0
[2]https://blog.csdn.net/john_lw/article/details/80306122
[3]https://www.cnblogs.com/jiawen010/p/11805241.html
[4]https://zhuanlan.zhihu.com/p/88275060
[5]https://www.zhihu.com/question/20596402?sort=created
[6]https://blog.csdn.net/qq_36906627/article/details/86634518
[7]https://www.cnblogs.com/yangk1996/p/12864004.html