存储引擎

一、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 版本即以后的版本
原文地址:https://www.cnblogs.com/lys-lyy/p/11161185.html