一、存储引擎概述
存储引擎是MySQL中特有的术语,它主要是指在MySQL中,用户可以根据应用的需求,选择如何存储、更新、查询和索引数据,是否使用事务等。
在MySQL中,支持多种不同类型的存储引擎,从而满足用户使用各种方式存储数据的需求。
二、存储引擎类型
查看引擎类型:
show engines;
MySQL数据库支持9中存储引擎。常用引擎的特点如下:
存储引擎 | 特点 | 应用 |
InnoDB | 支持事务处理,保证事务安全;支持外键;采用行锁 | 联机事务处理系统 |
MEMORY | 使用存储在内存中的内容创建表,所有数据存放在内存中,因此读取速度快,但数据易丢失,生命周期短;同时支持HASH索引和BTREE索引;采用表锁 | 数据安全要求不高的系统 |
MyISAM | 不支持事务的完整性和并发性,采用表锁;访问速度快;占用空间少 | 联机分析处理系统 |
在MySQL中,用户查看系统使用的存储引擎类型:
show variables like '%storage_engine';
三、InnoDB存储引擎
1、InnoDB存储结构
在InnoDB存储引擎中,所有数据都被逻辑地存储在表结构中,表空间又由段、区、页组成,因此InnoDB存储引擎的逻辑存储单元有 表空间、段、区、页四种类型。一个表空间多汗多个段,一个段包含多个区,一个区包含多个页。
①表空间
当使用InnoDB存储引擎时,所有数据都存储在表空间中,表空间又分为系统表空间和独立表空间。
系统表空间默认大小为64M。
show variables like '%auto%';
②段
常见的段有数据段,索引段、回滚段。
③区
区由连续的页构成,在物理存储上有系统分配一段连续的空间进行存储。每个区由64个连续的页构成,大小都是1MB。
④页
页是InnoDB存储引擎中最小的存储分配单位,默认大小为16KB。
2、InnoDB内存结构
内存结构分为 系统全局区和程序缓冲区。
查看InnoDB存储引擎的内存结构参数:
show variables like '%buffer%';