[聚合文章] MySQL的存储引擎与日志说明

MySQL 2012-04-06 22 阅读

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、EXAMPLE
BLACKHOLE、MERGE、NDBCLUSTER、CSV

  除此之外还可以使用第三方存储引擎。

1.1.4 innodb与myisam对比

InnoDb引擎

  1. 支持ACID的事务,支持事务的四种隔离级别;
  2. 支持行级锁及外键约束:因此可以支持写并发;
  3. 不存储总行数;
  4. 一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为2G),受操作系统文件大小的限制;
  5. 主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;最好使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。

Innodb的主索引结构如下:

 

MyISAM引擎

  1. 不支持事务,但是每次查询都是原子的;
  2. 支持表级锁,即每次操作是对整个表加锁;
  3. 存储表的总行数;
  4. 一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;
  5. 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。

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)    表数据进行整理来优化基于主键的查询(聚集索引)

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。