1.1 存储引擎的介绍
1.1.1 文件系统存储
文件系统:操作系统组织和存取数据的一种机制。文件系统是一种软件。
类型:ext2 3 4 ,xfs 数据。 不管使用什么文件系统,数据内容不会变化,不同的是,存储空间、大小、速度。
1.1.2 mysql数据库存储
MySQL引擎: 可以理解为,MySQL的“文件系统”,只不过功能更加强大。
MySQL引擎功能: 除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。
1.1.3 MySQL存储引擎种类
MySQL 提供以下存储引擎:
InnoDB、MyISAM (最常用的两种)MEMORY、ARCHIVE、FEDERATED、EXAMPLEBLACKHOLE、MERGE、NDBCLUSTER、CSV |
除此之外还可以使用第三方存储引擎。
1.1.4 innodb与myisam对比
InnoDb引擎
支持ACID的事务,支持事务的四种隔离级别;
支持行级锁及外键约束:因此可以支持写并发;
不存储总行数;
一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为2G),受操作系统文件大小的限制;
主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;最好使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。
Innodb的主索引结构如下:
MyISAM引擎
不支持事务,但是每次查询都是原子的;
支持表级锁,即每次操作是对整个表加锁;
存储表的总行数;
一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;
采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。
MYISAM的主索引结构如下:
两种索引数据查找过程如下:
1.2 innodb存储引擎
在MySQL5.5版本之后,默认的存储引擎,提供高可靠性和高性能。
1.2.1 Innodb引擎的优点
a) 事务安全(遵从ACID)b) MVCC(Multi-Versioning Concurrency Control,多版本并发控制)c) InnoDB行级锁d) 支持外键引用完整性约束e) 出现故障后快速自动恢复(crash safe recovery)f) 用于在内存中缓存数据和索引的缓冲区池(buffer pool(data buffer page log buffer page) 、undo buffer page)g) 大型数据卷上的最大性能h) 将对表的查询与不同存储引擎混合i) Oracle样式一致非锁定读取(共享锁)j) 表数据进行整理来优化基于主键的查询(聚集索引) |