数据库学习笔记(7)-----关于MySQL的InnoDB和MyISAM(2019/3/5
其实,同为数据库,Oracle和MySQL的细微差别挺多,就不一一列举,此章节就记录一下MySQL和Oracle的最大不同点:数据库引擎。
MySQL默认有两个数据库引擎:InnoDB和MyISAM,而Oracle没有数据库引擎,只有OLAP和OLTP,关于OLAP和OLTP的区别已经在上一章博客记录过(文末附链接),所以目前就讨论一下关于InnoDB和MyISAM的区别:
比较类型 | InnoDB | MyISAM |
---|---|---|
事务支持 | 支持 | 不支持 |
存储结构 | 一个或多个文件或独立表空间 | 存储为三个文件(.frm表定义,.myd数据文件,.myi索引文件) |
存储空间 | 需要更多的内存和存储 | 可压缩(三种存储格式,动态表、静态表、压缩表) |
可移植性 | 数据量大比较痛苦 | 数据文件移植比较方便 |
备份、恢复 | 使用Binlog备份,数据量大推荐 | 可针对单个表 |
自动增长列 | 可以建立联合索引(第一列) | 可以建立联合索引(不必为第一列) |
表锁 | 支持事务和行级锁 | 只支持表级锁 |
全文索引 | 不支持,可以通过Sphinx支持 | 支持 |
主键 | 没有主键会有默认的六位主键(用户不可见) | 允许没有主键 |
表总行数(使用count) | 遍历该表 | 直接取出数据 |
CURD操作 | 大规模insert、update使用 | 大规模select时使用 |
外键 | 支持 | 不支持 |
查询效率 | count全表慢 | count全表快 |
感觉整理成表格看起来好乱OTZ…
另:
Oracle的OLAP和OLTP:https://blog.csdn.net/weixin_44692483/article/details/88064937