存储引擎
一、MyISAM
1. 特点:
Mysql5.5版本之前的默认存储引擎
数据表文件组成:表名.frm .MYD .MYI
frm 描述表结构 MYD保存表数据 MYI存储表索引
2. 特性:
并发性与锁级别-表级锁;
支持全文检索
支持数据压缩
3. 使用场景:
非事务性应用(数据仓库,报表,日志数据);
只读类应用;
空间类应用(空间函数,坐标);
二、Innodb
1. 特点:
Mysql 5.5 以及以后版本默认的存储引擎;
2. 表空间描述:
SHOW VARIABLES LIKE '%innodb_file_per_table%';
ON:独立表空间(包含文件.frm + .ibd);
OFF:系统表空间 (ibdataX);
3. 表空间对比:
- 系统表空间无法简单的收缩文件大小
- 独立表空间可以通过optimize table 收缩系统文件
- 系统表空间会产生IO瓶颈
- 独立表空间可以同时向多个文件刷新数据
4. 特性:
- InnoDB 是一个事务性存储引擎
- 完全支持事物的ACID
- Redo Log 和 Undo Log
- Innodb 支持行级锁(并发程度更高)
三、两者之间的对比
对比项
|
MyISAM
|
InnoDB
|
主外键
|
不支持 | 支持 |
事物 | 不支持 | 支持 |
行级锁 | 表锁,即操作一条记录,也会锁住整个表;不适合高并发操作 |
行锁,也支持表级锁,行锁的只是锁住某一行,不对其他行造成影响; 适合高并发操作 |
缓存 | 只是缓存索引,不缓存真是数据 |
不仅缓存索引还要缓存真
实数据,对内存要求较高,
而且内存大小对性能有决
定性的影响
|
表空间 | 小 | 大 |
关注点 | 性能 | 事物 |
默认安装 | Y 5.5版本之前 | Y 5.5 版本即以后的版本 |