1.是否支持行级锁:MyISAM 只有表级锁(table-level locking),而InnoDB支持行级锁(row-level locking)和表级锁.默认为行级锁。
2.是否支持事务和崩溃后的安全恢复: MyISAM强调的是性能,每次查询具有原子性.其执行
速度比InnoDB类型更快,但是不提供事务支持。但是InnoDB提供事务支持事务,外部键等高级数据库功能。具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery
capabilities)的事务安全(transaction-saie (ACID compliant))型表。
3.是否支持外键:MyISAM不支持,而InnoDB支持。
4.是否支持MVCC:仅InnoDB支持。应对高并发事务,MVCC比单纯的加锁更高效;MVCC只
在READ COMMITTED和REPEATABLEREAD两个隔离级别下工作;MVCC可以使用乐观(optimistic)锁和悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一。
使用场合:
适合MyISAM:节约空间及相应速度
适合InnoDB:安全性,事物处理以及用户操作数据库表
<<MYSQL高性能>>上面写着这句话:
不要轻易相信"MyISAM比InnoDB快"之类的经验之谈,这个结论往往不是绝对的。
在很多我们已知场景中,InnoDB的速度都可以让MyISAM望尘莫及,
尤其是用到了聚簇索引,或者需要访问的数据都可以放入内存的应用。
数据表的存储位置:
MySQL数据表以文件方式存放在磁盘中
*包括表文件 , 数据文件 , 以及数据库的选项文件
*位置 : Mysql安装目录\data\下存放数据表,目录名对应数据库名 , 该目录下文件名对应数据表 .
![](https://img-blog.csdnimg.cn/20211007165117275.png?x-o 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6b6N5byfLWlkZWE=,size_11,color_FFFFFF,t_70,g_se,x_16)
InnoDB类型数据表只有一个 *.frm文件 , 以及上一级目录的ibdata1文件