目录
Mysql体系结构:
- 连接层:最上层是客户端和链接服务,链接服务提供安全方案,服务器验证客户端具有的操作权限.
- 服务层:完成核心服务功能,如SQL接口,缓存查询,SQL分析与优化,部分内置函数的执行
- 引擎层:存储引擎负责了MySQL数据的存储和提取,服务器根据需求选择合适的存储引擎
- 存储层:将数据文件存储在文件系统上,完成与存储引擎的交互
存储引擎:
存储引擎是存储数据,建立索引,查询/更新数据等技术的实现方式.存储引擎是基于表的,而不是基于库的,所以存储引擎也被称为表类型.
InnoDB:
介绍:InnoDB是一个兼顾高可靠和高性能的存储引擎,在Mysql5.5之后,InnoDB是默认的Mysql存储引擎
特点:1.DML(增删改)语句遵循ACID模型,支持事务
2.支持行级锁,具有较高的并发性能
3.支持外键Foreign Key约束,保证数据的完整性和正确性
文件:
innoDB对应的表以xxx.ibd格式存储,xxx是表名,ibd是文件后缀,InnoDB存储引擎的每张表对应一个表空间文件,表中存储着该表的结构(frm,sdi),数据和索引.
数据库中的表文件一般存储在C:\ProgramData\MySQL\MySQL Server 8.0\Data,可以在资源管理器查看,不过ibd文件是以二进制形式存在,无法查看具体内容.
若你想查看,则在C:\ProgramData\MySQL\MySQL Server 8.0\Data\**目录中输入cmd进入当前文件夹的命令行,输入ibd2sdi 标明1.ibd查看ibd结构
InnoDB的逻辑存储结构:
ibd文件就是一个表空间,表空间中由段组成,段由区(1M)组成的,区是由一个一个数据页组成的,每一页(16K)由一个个数据行组成的.
MyISAM:
介绍:
MyISAM是Mysql早期默认的存储引擎
特点:
1.不支持事务,不支持外键
2.不支持行锁,支持表锁
3.访问速度快
文件:
以MYD,MYI,sdi后缀存储
MYD:存储数据
MYI:存储索引
sdi:存储表结构信息
Memory:
介绍:Memory引擎的表数据存储在内存中,由于受到硬件问题,或断电问题的影响,只能将这些表作为临时表或缓存使用.
特点:
内存存放
hash索引(默认)
文件:
xxx.sdi:存储表结构信息
面试题:InnoDB和Myisam的区别:
1.文件存储
2.事务支持
3.锁的范围
4.外键支持
存储引擎选择:
InnoDB:MYSql的默认存储引擎,对事务的完整性和并发性要求较高的情况下使用.
MyISAM:应用以读操作和插入操作为主,很少的更新和删除操作,比如业务系统中的日志,电商中足迹,评论相关数据.不过现在几乎被MongoDB取代
MEMORY:通常用来做缓存,现在几乎被Redis取代.