一、存储引擎去区别
A、存储文件:
1. innodb有两个文件,frm文件存储表结构和元信息等,ibd存储数据(包括索引和数据)
2. myisam有三个文件,因为索引和数据分开存放的
B、事务区别
1. innodb支持事务
2. myisam、memory、archive都不支持事务
C、锁区别
1. innodb默认支持的是行锁,也支持表锁,取决于是否有索引,如果没有索引只支持表锁
2. myisam默认支持的表锁
D、外键
1. innodb支持外键
2. myisam不支持外键
E、适用场景
1. 如果要支持事务,选择innodb
2. 如果主要用来插入和查询,myisam能有更高的效率
3. 如果只是临时存放数据,数据量不大,并且不需要较高安全性,可以选择memory
4. 如果只有insert和select操作,可以选择archive,注意不是并发安全的,非常适合归档数据,记录日志等。
二、架构
A、client
B、mysqlserver
1. 连接器
2. 分析器
3. 优化器
4. 执行器
C、存储引擎
三、事务四大特性实现原理
A、原子性实现原理
1. 通过undo log来实现,在操作任何数据之前,现将数据备份到undo log,然后进行数据修改,如果需要回滚,就通过undo log来恢复。
B、持久性实现原理
1. 通过redo log来实现
C、隔离性原理
1. 未提交读
2. 提交读
3. 可重复读
4. 串行化