【高并发高性能高可用之海量数据MySQL实战-3】-MySQL逻辑架构图
作者:互联网
1.Server层
1.Connectors
指的是各种形式的与MySQL交互的客户端。包括JDBC客户端、mysql自带的客户端、Navicat、sqlyog等客户端工具。
2.Management Serveices & Utilities
系统管理和控制工具
3.Connection Pool: 连接池
管理用户连接,等待处理连接请求。
负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。
而连接线程的主要工作就是负责 MySQL Server 与客户端的通信,接受客户端的命令请求,传递Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的cache 等。
4.SQL Interface: SQL接口
接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface
5.Parser: 解析器
SQL命令传递到解析器的时候会被解析器验证和解析。
主要功能:
a . 将SQL语句进行词法分析和语法分析,解析成语法树,然后按照不同的操作类型进行分类,然后做出针对性的转发到后续步骤,以后SQL语句的传递和处理就是基于这个结构的。
b. 如果在分解过程中遇到错误,那么就说明这个sql语句是不合理的。
6.Optimizer: 查询优化器
SQL语句在查询之前会使用查询优化器对查询进行优化。explain语句查看的SQL语句执行计划,就是由查询优化器生成的。
优化器都做哪些优化处理呢?比如
1. 当有多个索引可用的时候,决定使用哪个索引;
2. 在一个语句有多表关联(join)的时候,决定各个表的连接顺序,以哪个表为基准表。
7.Cache和Buffer: 缓存及缓冲区
包括全局缓存和存储引擎对应的缓存及缓冲区。全局缓存主要是数据字典缓存数据例如:表空间的定义缓存、约束定义缓存、表结构定义缓存、存储过程定义缓存、字符集定义缓存等。在MySQL5.7之前的
版本中还包含查询缓存,但是在MySQL8.0.3以后的版本中已经将查询缓存移除了。
存储引擎的缓存由存储引擎定义和管理,不同的存储引擎缓存及缓冲区的结构和使用方法不同。后面的内容我们着重讲解InnoDB引擎的缓存及缓冲区。
2.存储引擎
与其他数据库例如Oracle 和SQL Server等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“Pluggable Storage Engine Architecture”(可插拔的存储引擎架构)的特性,也就意味着MySQL数据库提供了多种存储引擎。
而且存储引擎是针对表的,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。也就是说,同一数据库不同的表可以选择不同的存储引擎
creat table xxx()engine=InnoDB/Memory/MyISAM
简而言之,存储引擎就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
1.MySQL存储引擎种类
存储引擎 | 说明 |
MyISAM | 高速引擎,拥有较高的插入,查询速度,但不支持事务,表级锁 |
InnoDB | mysql 的默认引擎,支持事务、行锁、外键。mysql 选择 InnoDB 引擎时, 功能最完整。 |
ISAM | MyISAM的前身,MySQL5.0以后不再默认安装 |
MRG_MyISAM (MERGE) | 将多个表联合成一个表使用,在超大规模数据存储时很有用 |
Memory | 内存存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。只在内存上保存数据,意味着数据可能会丢失 |
BLACKHOLE | /dev/null存储引擎(您向其写入的任何内容都会消失) |
Archive | 将数据压缩后进行存储,非常适合存储大量的独立的,作为历史记录的数据, 但是只能进行插入和查询操作 |
CSV | CSV 存储引擎是基于 CSV 格式文件存储数据(应用于跨平台的数据交换) , 数据会生成一个 CSV 文件,用户逗号分隔的一个文本文件。 |
2.查看存储引擎
mysql> show engines;
3.InnoDB和MyISAM存储引擎区别
Innodb | Myisam | |
存储文件 | .ibd 数据文件和索引文件,包含SDI元数据 | .sdi 元数据定义文件 .MYD 数据文件 .MYI 索引文件 |
锁 | 表锁、行锁 | 表锁 |
事务 | 支持 | 不支持 |
CRDU | 读、写 | 读多 |
count | 扫表 | 专门存储的地方 |
索引结构 | B+ Tree | B+ Tree |
XtraDB存储引擎是由Percona公司提供的存储引擎,该公司还出品了Percona Server这个产品,它是基于MySQL开源代码进行修改之后的产品。其中MariaDB中包含了XtraDB引擎。
4:引擎的选择
那么多引擎我们怎么选择?大部分情况下,InnoDB都是正确的选择。对于如何选择MySQL引擎这件事上可以归纳为一句话:除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都 应该选择InnoDB引擎。
如果您觉得文章好看,欢迎点赞收藏加关注,一连三击呀,您的肯定是我持续输出的动力,感谢!!☺☻
标签:存储,缓存,海量,SQL,架构图,引擎,MySQL,查询 来源: https://blog.csdn.net/chongfa2008/article/details/122795012