1、支持表锁不支持行锁
2、不支持事务,不支持外键
3、访问速度快(针对大量DQL语句基本上不牵扯到DML语句或者DML操作的控制权由管理端进行操作可以用该引擎)
(表名).sdi:表结构信息
(表名).MYD:存储数据
(表名).MYI:存储索引
相对于另一个常见存储引擎MylSAM来说 InnoDB增加了
1、支持事务(事务的特点主要保证了数据安全正确性,也就是说对于DML操作比较多的表来说InnoDB更加适合)
2、支持行锁 (注意 在update某条语句的时候必须用上索引 否则行锁将会失效,仍然用的是表锁)
3、支持外键约束(针对外键来说有利也有弊,保证了数据的正确性和完整性,缺点是针对DQL 和DML来说 需要触发相关操作去检查,而不得不消耗资源 检查每一次主外键关联是否正确关联)
1、(表名).ibd 每张表都对应这样形式的表空间文件,里面存储了表的数据、表结构(sdi 、frm)以及索引
比如上图就是我本地的数据库存放文件夹里面就有相应表的.ibd文件(因为是二进制文件直接用文本形式打开是看不到的,通过该目录打开cmd 输入 ibd2sdi (表名).ibd 指令即可打开)
2、整个一个存储结构是由 TablesSpece(表空间) 包含多个 Segment(段)
而 Segment(段)包含多个 Extent(区)(大小固定 1M) ,
Extent(区) 又包含多个Page(页)(大小固定 16K),
Page(页)包含了多个Row(行) ,
Row(行) 包含了字段、指针、最后一次事务操作的 Trx id;
表数据存储在内存,支持Hash索引
二、存储到磁盘形式只有 (表名).sdi 存储表结构信息
三种存储引擎对比图


