简介:
采用MySQL的业务的体系结构主要为: 连接层、服务层、引擎层、存储层
存储引擎是基于表建立的。别称 表类型 MySQL 5.5 后默认的存储引擎为InnoDB(行级锁、事务)
查看mysql数据库支持的存储引擎
SHOW ENGINES;

Support DEFAULT 默认引擎 Transactions 是否支持事务
创建表时制定存储引擎
create table [name](
...
) ENGINE = [Engine_name]
InnoDB存储引擎
是由Oracle创建的下一代InnoDB引擎,拥有者是InnoDB而非MySQL。 Google、木下靖文、Percona、Facebook等也是重要贡献者、
特点:
DML操作(增删改)遵循 ACID 模型,支持事务 行级锁,提升高并发情景访问性能 支持外键 FOREIGN KEY约束(一般开发中不会使用)
文件:
[table_name].ibd
使用innoDB引擎的每张表都会对应一个二进制表空间文件,存储该表表结构、数据、索引。
表结构:frm、sdi
frm是早期的表结构
查看文件:
ibd2sdi xxx.ibd // 转化成sdi(json格式)


MyISAM
是MySQL早期的默认存储引擎
特点:
仅支持表锁,不支持行锁 不支持事务,不支持外键 访问速度快
文件:
MYI — 存储索引 MYD — 存储数据 sdi — 表结构存放文件(json格式数据)
Memory
数据存储在内存,作为临时表、缓存使用
特点:
内存存放 Hash索引(默认)
文件:
xxx.sdi
InnoDB 和 MyISAM
二者的区别

在引擎comments中也有提到

选择存储引擎
InnoDB:
对事务有需求,并发条件要求数据的一致性。 修改删除操作。
MyISAM:
以读操作和插入操作为主,对事务完整性要求不高,并发情况较少。
Memory:
保存在内存中,用于缓存和临时表。 对表的大小有限制,无法保障数据的安全性。
对MyISAM和Memory的需求都被非关系型数据库(Redis)替代了
Redis是基于内存的NoSQL数据库,适用于需要高性能读写的场景。
如果需要关系型数据库的特性和大量持久化的能力,
InnoDB反倒比MyISAM更稳定可靠,鲁棒性更高。