(一)全解MySQL之架构篇:自顶向下深入剖析MySQL整体架构!

引言

作者✍️:竹子爱熊猫

无论你是前端还是后端,只要是一个合格的开发者,对于MySQL这个名词相信都不陌生,MySQL逐渐成为了最受欢迎的关系型数据库,无论你是大前端,亦或是Java、Go、Python、C/C++、PHP....等这些语言的程序员,对于MySQL是必然要掌握的核心技术之一,程序员不能没有MySQL,就像西方不能失去耶路撒冷一般。

当然,MySQL也不仅仅是唯一的数据库,与它类似的关系型数据库竞品还有很多,例如Oracle、SQLServer、PostgreSQL、DB2....,这其中使用最为广泛的是Oracle,但Oracle实际上并不怎么受程序员欢迎,或者说Oracle并不怎么受中小企业的Boss欢迎,原因嘛大家都清楚,无非因为它收费罢了。

也正是由于Oracle收费的原因,才导致MySQL像如今这么流行,正所谓时势造英雄,MySQL作为免费的开源数据库,也正是抓住了这个风口,所以才越发流行。对于MySQL,用一句话形容很贴切:“天不生我MySQL,编程万古如长夜”。

一、MySQL概述与系列预告

MySQL数据库是由瑞典的MySQL AB公司开发的,后面这家企业被Sun公司收购,最后Sun公司又被Oracle74亿美元收购,所以本质上MySQL现在隶属于Oracle旗下,因此大家也会发现,MySQL后面的高版本会有收费版出现。

实际上如果MySQL没有并入Oracle的话,是有很大几率问鼎数据库榜首的,造化弄人。

当然,虽然MySQL出了收费版,但Oracle也没有赶尽杀绝,而是向MySQL的用户给出了《十项承诺》[1],所以我们如今依旧可以使用开源版的MySQL

不过对于这些理论概念就不过多介绍了,毕竟《全解MySQL专栏》[2]的文章并不打算阐述入门这块的内容,因为对于数据库的基础操作知识相信大家都已具备,而接下来的内容,也包括后续的文章,都会去围绕一些偏进阶方面的技术进行全方位剖析,大体的规划如下:

  • 《自顶向下深入剖析MySQL整体架构!》

  • 《一条SQL语句从诞生至结束的多姿多彩历程!》

  • 《库表设计篇:五大范式、BC范式与反范式详解!》

  • 《MySQL索引分类与B+树索引的深入思考与原理剖析》

  • 《MySQL-MVVC并发控制与行锁、表锁、间隙锁机制探讨》

  • 《MySQL事务篇:ACID原则与事务机制深入剖析》

  • 《InnoDB与MyISAM存储引擎的技术内幕》

  • 《MySQL日志篇之undo-log、bin-log、redo-log等傻傻分不清!》

  • 《MySQL内置函数与常用命令大全!》

  • 《SQL优化篇之如何成为一个写SQL的高手!》

  • 《单机MySQL索引、表结构优化及激进调优方案详解》

  • 《MySQL高可用篇之主备读写分离与数据一致性思考》

  • 《MySQL高可用篇之双主双写多活架构剖析!》

  • 《MySQL在海量数据下分库分表的正确姿势》

  • 《MySQL分库分表之MyCat中间件实战》

  • 《MySQL分库分表之Sharding-JDBC实战》

  • 《MySQL分库分表后产生的分布式事务问题!》

  • 《MySQL慢查询、死锁、数据错乱等线上问题排查指南!》

  • 《MySQL8.x新版本的特性及与MySQL5.x版本之间的差异!》

  • ......

整个MySQL系列会按上述目录进行全面阐述,但上述目录只是预期规划内容,实际撰写过程中可能会适当调整,但给出的技术点都会事无巨细的讲到,内容只多不少,因此大家感兴趣的话,可以点个关注,由我伴随诸君一同彻底掌握MySQL数据库。

二、MySQL整体结构浅析

本章作为MySQL系列的开篇之作,当然也有一定的原因,毕竟只有先对MySQL的整体架构有了一个宏观的认知,才能更好的理解每个细节点的知识。

MySQL与我们开发项目时相同,为了能够合理的规划整体架构设计,也会将整个MySQL服务抽象成几个大的模块,然后在内部进行实现,因此先来看看MySQL的整体架构,开局先上一张图:

从上往下看,依次会分为网络连接层、系统服务层、存储引擎层、以及文件系统层,往往编写SQL后,都会遵守着MySQL的这个架构往下走。

  • 连接层:主要是指数据库连接池,会负责处理所有客户端接入的工作。

  • 服务层:主要包含SQL接口、解析器、优化器以及缓存缓冲区四块区域。

  • 存储引擎层:这里是指MySQL支持的各大存储引擎,如InnoDB、MyISAM等。

  • 文件系统层:涵盖了所有的日志,以及数据、索引文件,位于系统硬盘上。

OK~,除了上述的四层外,还有客户端,这个客户端可以是各类编程语言,如Java、Go、Python、C/C++、PHP、Node、.Net....,也可以是一些数据库的可视化软件,例如Navicat、SQLyog等,也可以是mysql-cli命令行工具。总之,只要能与MySQL建立网络连接,都可以被称为是MySQL的客户端。

MySQL-Server就是上述图中的那玩意儿,一般来说,客户端负责编写SQL,而服务端则负责SQL的执行与数据的存储。

MySQL的整体架构有了简单了解后,接下来详细的拆解一下MySQL-Server的每个层面。

三、网络连接层

在之前的《网络之旅》[3]的文章中&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术小羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值