存储引擎
MySQL体系结构
(1)连接层
最上层是一些客户端和链接服务。主要是完成类似于连接处理,授权认证等
(2)服务层
SQL接口,完成缓存的查询,SQL的分析和优化,部分内置函数执行。跨存储引擎功能实现,解析器,查询优化器,缓存等等。
(3)引擎层
负责MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同功能。
(4)存储层
将数据、索引、日志文件存储在文件系统中
存储引擎介绍
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于数据库的。
默认存储引擎是InnoDB
- 查询数据库支持的存储引擎
show engines ;
存储引擎特点
-
InnoDB
(1)介绍
InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎(2)特点
- DML操作遵循ACID模型,支持事务
- 行级锁,提高并发性能
- 支持外键FOREIGN KEY约束,保证数据完整,正确
(3)文件
XXX.ibd,innoDB引擎的每张表都会对应一个表空间文件,用来存储表的表结构、数据和索引(4)逻辑存储结构
TableSpect:表空间
InnoDB存储引擎逻辑结构最高层,ibd文件就是表空间文件,在其中有多个Segm3
Segment:段
表空间由多个段组成,一个段中由多个区
Extent:区
一个区中有64个连续的页
Page:页
也是InnoDB存储引擎磁盘管理最小单元
Row:行
InnoDB存储引擎面向列的,数据按行进行存放 -
MyISAM
(1)介绍
MySQL早期默认存储引擎
(2)特点
不支持事务,不支持外键
支持表锁,不支持行锁
(3)文件
.sdi:存储表结构信息
.MYD:存储数据
.MYI:存储索引 -
Memory
(1)介绍
Memory引擎的表数据存储在内存中,一些断电问题,会导致数据丢失,只能作为临时表使用
(2)特点
内存存放
(3)文件
.sdi:存储表结构信息
区别及其特点
InnoDB支持事务安全,支持表锁,行锁,支持外键
MyISAM不支持事务,支持表锁,不支持行锁,不支持外键
存储引擎选择
-
InnoDB:默认存储引擎,支持事务,外键,事务完整性比较高的要求,并发条件数据一致性,除插入和查询,还有更新,删除,适合它
-
MyISAM:读和插入操作为主,很少更新和删除,事务完整,并发性要求不高,适合它
-
MEMORY:数据保存在内存中,访问速度快,临时表缓存,太大的表无法在内存缓冲