01MySQL体系结构与存储引擎

2020-09-26  本文已影响0人  owen_he

内容介绍

本节会分享MySQL 体系结构与存储引擎,包括 MySQL 数据库的体系结构、MySQL 支持的存储引擎,InnoDB 能够取代 MyISAM 的原因和 InnoDB 几大核心特性、 MySQL 5.7 版本和 MySQL 8.0 版本做了哪些优化和改进。

MySQL 数据库的体系结构

MySQL 数据库的体系结构,如下图所示


1.png

MySQL 体系结构由 Client Connectors 层、MySQL Server 层及存储引擎层组成。

用一条 SQL SELECT 语句的执行轨迹来说明客户端与 MySQL 的交互过程,如下图所示。


2.png

1、通过客户端/服务器通信协议与 MySQL 建立连接。
2、查询缓存,这是 MySQL 的一个可优化查询的地方,如果开启了 Query Cache 且在查询缓存过程中查询到完全相同的 SQL 语句,则将查询结果直接返回给客户端;如果没有开启Query Cache 或者没有查询到完全相同的 SQL 语句则会由解析器进行语法语义解析,并生成解析树。
3、预处理器生成新的解析树。
4、查询优化器生成执行计划。
5、查询执行引擎执行 SQL 语句,此时查询执行引擎会根据 SQL 语句中表的存储引擎类型,以及对应的 API 接口与底层存储引擎缓存或者物理文件的交互情况,得到查询结果,由MySQL Server 过滤后将查询结果缓存并返回给客户端。若开启了 Query Cache,这时也会将SQL 语句和结果完整地保存到 Query Cache 中,以后若有相同的 SQL 语句执行则直接返回结果。

存储引擎概述

存储引擎是 MySQL 中具体与文件打交道的子系统,它是根据 MySQL AB 公司提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎,常用的存储引擎MyISAM、支持事务的 InnoDB、内存类型的 Memory、归档类型的 Archive、列式存储的 Infobright等。

在 MySQL 5.6 版本之前,默认的存储引擎都是 MyISAM,但 5.6 版本以后默认的存储引擎就是 InnoDB 了。

InnoDB 存储引擎的具体架构主要有是实例层(计算层),位于内
位于内存中,和是物理层,位于文件系统中。

新版本特性

这里主要讲解一下 MySQL 5.7 版本和 8.0 版本的一些新特点。

InnoDB 和 MyISAM

InnoDB 和 MyISAM 的功能对比如下图所示。


3.png

1、InnoDB 支持 ACID 的事务 4 个特性,而 MyISAM 不支持;
2、InnoDB 支持 4 种事务隔离级别,默认是可重复读 Repeatable Read 的,MyISAM 不支持;
3、InnoDB 支持 crash 安全恢复,MyISAM 不支持;
4、InnoDB 支持外键,MyISAM 不支持;
5、InnoDB 支持行级别的锁粒度,MyISAM 不支持,只支持表级别的锁粒度;
6、InnoDB 支持 MVCC,MyISAM 不支持;

InnoDB 表最大还可以支持 64TB,支持聚簇索引、支持压缩数据存储,支持数据加密,支持查询/索引/数据高速缓存,支持自适应hash索引、空间索引,支持热备份和恢复等。

1、读写混合模式下,随着 CPU 核数的增加,InnoDB 的读写能力呈线性增长,
2、在测试用例里,最高可达近 9000 的 TPS,但 MyISAM 因为读写不能并发,它的处理能力跟核数没关系,呈一条水平线,TPS 低于 500。
3、只读模式下,随着 CPU 核数的增加,InnoDB 的读写能力呈线性增长,最高可达近 14000 的 TPS,但 MyISAM 的处理能力不到 3000 TPS。

InnoDB 存储引擎

InnoDB 存储引擎的核心特性包括:MVCC、锁、锁算法和分类、事务、表空间和数据页、内存线程以及状态查询。

总结回顾

5.png
上一篇 下一篇

猜你喜欢

热点阅读