一、MySQL体系结构
Mysql底层也有缓存,也有查询优化器,会进行自主优化
Mysql体系结构
二、存储引擎只针对表,数据库中允许出现不同引擎
• InnoDB • MyISAM • XtraDB • CSV • Memory • Archive • Federated • ...
三、InnoDB存储引擎
1.MySQL 5.5.8后InnoDB是默认存储引擎
2.InnoDB采用”表空间”保存文件
3.InnoDB支持事务处理
四、InnoDB的存储特性
InnoDB表空间有两种形式
- 使用系统表空间 ibdataN(不推荐)
所有数据都在一个表空间中,不利于数据的回收 - 独立表空间:tablename.ibd(推荐)
设置innodb_file_per_table决定表空间模式
五、为什么推荐独立表空间
1.系统表空间 all in one 不利于管理
2.系统表空间会产生IO瓶颈
3.系统表空间很难回收存储空间
4.独立表空间使用optimize table 命令回收存储空间
六、InnoDB的事务特性
1.InnoDB支持事务
2.InnoDB默认使用行级锁
3.InnoDB具备良好的高并发特性
七、InnoDB的适用场景
1.InnoDB存储引擎适用于绝大多数场景
2.MySQL 5.7 以后 InnoDB也支持全文索引与空间函数
3.5.5版本以前默认是MyISAM
八、MyISAM存储引擎
1.不支持事务
2.支持全文检索,支持text支持前缀索引
3.支持数据压缩
4.紧密存储,顺序读性能很好
5.表级锁,混合读写性能不佳,并发性差
九、MyISAM应用场景
1.非事务应用 ,例如: 保存日志
2.只读类应用 ,报表数据,字典数据
3.空间类应用,开发GIS系统(5.7版本以前)
4.系统临时表,SQL查询,分组的临时表引擎
十、Memory存储引擎
1.不支持事务
2.内存读写,临时存储
3.超高的读写效率,比MyISAM高一个量级
4.表级锁,并发性差
十一、Memory应用场景
1.读多写少的静态数据,例如省市县的对应表
2.充当缓存使用,保存高频访问静态数据
3.系统临时表
十二、Memory关键参数
设置max_heap_table_size控制内存表大小(字节)
设置tmp_table_size设置内存临时表最大值(字节)
十三、CSV存储引擎
1.纯文本保存
2.不支持事务
3.不支持索引
十四、CSV应用场景
数据交换/数据迁移
image.png
不依赖MySQL环境
image.png