MySQL体系架构入门

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 作为一个后端的开发每天都要跟数据库打交道,不管你是Java开发、PHP开发还是Python开发,你可以不会其他的语言,但是数据库是都必须掌握的。而MySQL则是很多的公司采用的主流数据库之一。所以了解MySQL的体系结构能够帮助我们更熟练的掌握MySQL,大大提高平时的开发效率。

一、前言


作为一个后端的开发每天都要跟数据库打交道,不管你是Java开发、PHP开发还是Python开发,你可以不会其他的语言,但是数据库是都必须掌握的。而MySQL则是很多的公司采用的主流数据库之一。所以了解MySQL的体系结构能够帮助我们更熟练的掌握MySQL,大大提高平时的开发效率。


二、正文


MySQL体系结构图如下(图源网络):


4310af0480694702aae49da50ce35908~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


MySQL的结构组件可以分为四层架构,它们分别是:


1)、连接层


连接层是最上面的一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。


主要完成一些类似于链接处理、授权认证、以及相关的安全方案。在该层引入线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。


2)、服务层


第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。并且所有跨存储引擎的功能也在服务层实现。在服务层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询顺序,是否利用索引查询等等,最后再生成相应的执行操作。如果是查询语句,服务器还会查询内部的缓存,如果缓存空间足够,这样在解决大量读操作的环境中能够很多好的提升系统的性能。


3)、引擎层


存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能。MySQL数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。所以我们可以根据实际使用的需求,选择合适的存储引擎。


4)、存储层


数据存储层,主要将数据存储在文件系统之上,并且完成和数据库存储引擎的交互。


由上面的体系结构图可以发现,整个MySQL 体系结构由以下几个部分组成:


  • Connectors:连接组件


  • Connection Pool:连接池组件


  • Management Services & Utilities:管理服务和工具组件


  • SQL Interface:SQL接口组件


  • Parser:查询分析组件


  • Optimizer:优化器组件


  • Caches & Buffers:缓冲池组件


  • Pluggable Storage Engines:存储引擎


  • File System:文件系统


Connectors:不同语言的代码程序和mysql的交互(SQL交互),比如JAVA的jdbc、python、php等等。


Connection Pool:数据库连接池负责管理、缓冲用户的连接,线程处理等需要缓存的需求。


Management Services & Utilities:管理服务和工具组件 系统管理和控制工具,例如备份恢复、Mysql复制、集群等。


SQL Interface:sql接口 接受用户的SQL命令,并且返回用户需要查询的结果。


Parser:查询解析器,SQL命令传递到解析器的时候会被解析器验证和解析(权限、语法结构)。


Optimizer:查询优化器组件,SQL语句在查询之前会使用查询优化器对查询进行优化。


select id,name from user where age = 20;
复制代码


上面的查询语句为以下的查询顺序:


1、先根据where 语句进行选取,而不是先将表全部查询出来以后再进行age过滤


2、根据id和name进行属性投影,而不是将属性全部取出以后再进行过滤


3、将这两个查询条件联接起来生成最终查询结果


Caches & Buffers:缓存池组件。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据


Pluggable Storage Engine:存储引擎组件。MySQL是插入式存储引擎 存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库


中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)


File System:文件系统包括日志文件,数据文件,配置文件,pid文件,socket文件等。


和其他的数据库相比,MySQL的特殊之处在于它的架构可以在不同的场景中应用并发挥更好的作用。这是因为MySQL的存储引擎是插件式的存储引擎架构,这样能够将查询处理和其他的系统任务以及数据的存储提取分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。对于MySQL存储引擎的详细介绍,我之前在今天我们来说说MySQL的存储引擎 这篇文章中详细写过,有需要的可以参考。


三、结尾


以上就是关于MySQL结构体系的介绍,只有了解了MySQL的结构体系,才能明白MySQL的运行原理,对日常开发和SQL优化具有很好的帮助。后面的内容会详细介绍一下MySQL优化相关的内容。有任何问题可以下方留言或者私信交流讨论。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
5月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
4月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
2907 9
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
4月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
9月前
|
SQL 关系型数据库 MySQL
网安入门之MySQL后端基础
《网安入门之MySQL后端基础》简介: 本文介绍了数据库及MySQL的基础知识,涵盖数据库的概念、结构与操作。数据库是组织化存储数据的集合,通过表、列、行等结构实现高效管理。MySQL作为开源的关系型数据库管理系统,广泛应用于Web开发。文中详细讲解了MySQL的基本操作,如增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)等语句的使用方法,并介绍了数据库事务的ACID特性。此外,还探讨了SQL注入攻击的风险及防范措施,强调了预处理语句的重要性。最后,简述了PHP中mysqli扩展的使用方法,包括连接数据库、执行查询和关闭连接等步骤。
|
10月前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
6月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
8月前
|
SQL 存储 缓存
MySQL的架构与SQL语句执行过程
MySQL架构分为Server层和存储引擎层,具有高度灵活性和可扩展性。Server层包括连接器、查询缓存(MySQL 8.0已移除)、分析器、优化器和执行器,负责处理SQL语句;存储引擎层负责数据的存储和读取,常见引擎有InnoDB、MyISAM和Memory。SQL执行过程涉及连接、解析、优化、执行和结果返回等步骤,本文详细讲解了一条SQL语句的完整执行过程。
252 3
|
10月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
76 3
|
1月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

推荐镜像

更多