简介:存储引擎是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的, (同一个数据库的不同表可以选择不同的存储引擎) 所以存储引擎也可被称为表类型。
我们输入 SHOW CREATE TABLE 表名; 来查看建表语句。我们可以看到我们建表时候未输入存储引擎,系统有默认的存储引擎 InnoDB(MySQL5.5以后默认InnoDB)。
1.创建表的时候,指定存储引擎:
CREATE TABLE 表名(
字段1 字段类型(长度)[COMMENT 字段1注释],
字段2 字段类型(长度)[COMMENT 字段2注释],
字段3 字段类型(长度)[COMMENT 字段3注释]
)ENGINE=INNODB[COMMENT 表注释];
2.查询数据库支持的存储引擎:
SHOW ENGINNES;
InnoDB:
InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,MySQL5.5以后,MySQL默认的存储引擎是InnoDB。
特点:
DML操作遵循ACID模型,支持事务
行级锁,提高并发访问性能
支持外键约束,保证性能完整性和正确性
文件:
xxx.db:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm,sdi),数据和索引。
逻辑存储空间:
TableSpace(表空间)包含很多Segment(段)包含很多Extent(区)包含很多Page(页)包含很多Row(行)包含一个(最后一次操作的id 和一个指针 还有一个一个的字段),page 页是磁盘操作的最小单元。一个区的大小是固定的1M,一个页的大小是固定的16K。
MyISAM
MyISAM是MySQL早期的默认存储引擎。
特点:
不支持事务,不支持外键
支持表锁,不支持行锁
访问速度快
文件:
MyISA会有三个文件:
xxx.sdi:存储表结构信息
xxx,MYD:存储数据
xxx.MYI:存储索引
Memory
Memory引擎的表的数据是存储在内存中的,由于受到硬件问题或断电问题的影响,只能将这些表作为临时表或缓存使用。
特点:
内存存放
hash索引(默认)
文件:
xxx.sdi:存储表结构信息
存储引擎的选择:
在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。