MySQL 5.5.5后InnoDB是默认存储引擎
InnoDB采用"表空间"保存文件
InnoDB支持事物处理
InnoDB的存储特性-
InnoDB表空间有两种形式
- 使用系统表空间 ibdataN
- 独立表空间 tablename.ibd (推荐)
-
设置innodb_file_per_table决定表空间模式
-
为什么推荐独立表空间
系统表空间 all in one 不利于管理
系统表空间会产生IO瓶颈
系统表空间很难回收存储空间
独立表空间使用 optimize table 命令回收存储空间
- InnoDB支持事务
- InnoDB默认使用行级锁
- InnoDB具备良好的并发特性
职责分类:
- 共享锁 - 读锁
- 独占锁(排它锁) - 写锁
粒度分类
- 行级锁
- 表级锁
MyISAM存储引擎 MyISAM特点在InnoDB中只有利用索引的更新,删除操作,才可以使用行级锁
不能使用索引的写操作则是表锁
在实际开发的时候,如果遇到写操作,一定要确保update/delete语句的条件
要能够使用索引,否则就会锁表,程序不具备并发性
- 不支持事务
- 支持全文检索,支持text支持前缀索引
- 支持数据压缩
- 紧密存储,顺序读性能很好
- 表级锁,混合读写性能不佳,并发性差
- 非事务应用,例如:保存日志
- 只读类应用,报表数据,字典数据
- 空间类应用,开发GIS系统(5.7版本以前)
- 系统临时表,SQL查询,分组的临时表引擎
- 不支持事务
- 内存读写,临时存储
- 超高的读写效率,比MyISAM高一个量级
- 表级锁,并发性差
- 读多写少的静态数据,例如省县市的对饮表
- 充当缓存使用,保存高频访问静态数据
- 系统临时表
- 设置max_heap_table_size控制内存表大小(字节)
- 设置tmp_table_size设置内存临时表最大值(字节)



