1. MyISAM InnoDB 区别
| 对比项 | 外键 | 事务 | 行表锁 | 缓存 | 关注点 | 默认安装 | 默认使用 | 自带系统表使用 |
|---|---|---|---|---|---|---|---|---|
| MyISAM | 不支持 | 不支持 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 | 只缓存索引,不缓存真实数据 | 节省资源、消耗少、简单业务 | Y | N | Y |
| InnoDB | 支持 | 支持 | 行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作 | 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响 | 并发写、事务、更大资源 | Y | Y | N |
ACID:(atomicity)原子性,(consistency)一致性,(isolation)隔离性,(durability)持久性
2. InnoDB 支持的事务隔离级别
1. read uncommited :读到未提交数据
事务中的修改,即使没有提交,对其他事务也是可见的。
2. read committed:脏读,不可重复读
一个事务开始时,只能“看见”已经提交的事务所做的修改
3. repeatable read:可重读
同一个事务中,多次读取同样记录的结果是一致的。mysql默认的隔离级别。
4. serializable :串行事物
最高隔离级别,读取每一行数据都加上锁,可能导致大量的超时和锁争用问题,一般不使用。
mysql常见面试题链接: zhuanlan.zhihu.com/p/59838091