我的编程空间,编程开发者的网络收藏夹
学习永远不晚

什么是MySQL体系架构

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

什么是MySQL体系架构

本篇内容主要讲解“什么是MySQL体系架构”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是MySQL体系架构”吧!

写在前面

很多小伙伴工作很长时间了,对于MySQL的掌握程度却仅仅停留在表面的CRUD,对于MySQL深层次的原理和技术知识了解的少之又少,随着工作年限的不断增长,职场竞争力却是不断降低的。很多时候,出去面试时,被面试官吊打的现象成了家常便饭。比如,对于MySQL的高频面试题有:

  • 说说MySQL中MVCC机制的原理?

  • MySQL的事务原理和实现?

  • MySQL数据主从复制的原理?

  • MySQL底层数据的存储结构?

  • 如何使MySQL支持海量数据存储?

  • MySQL中的锁机制原理和实现?

  • MySQL索引机制?索引中涉及的数据结构和算法?

  • MySQL为何使用B+树作为索引结构?

  • B+树可以存放多少数据?

  • 说说MySQL中间隙锁的实现原理?

  • InnoDB引擎为何会崩溃?说说其实现原理?

  • 等等其他一系列高频面试

如果一一列举的话,大概能够列举上百个关于MySQL的高频面试题,这些你都会吗?

不仅仅是面试,如果你想从一名底层程序员上升为高级工程师,架构师等,MySQL的底层原理和技术是你必须要掌握的。

注:冰河后续会不定时连载MySQL底层原理和技术的文章,与小伙伴们一起死磕MySQL,将冰河掌握的MySQL底层技术分享给大家,在面试时吊打面试官,在工作中吊打其他小伙伴。

文章已收录到:

https://github.com/sunshinelyz/technology-binghe

https://gitee.com/binghe001/technology-binghe

MySQL体系架构

我们先来看看MySQL的体系架构图,如下所示。

什么是MySQL体系架构

注:图片来自互联网

从MySQL的架构图,我们可以看出MySQL的架构自顶向下大致可以分为网络连接层、数据库服务层、存储引擎层和系统文件层四大部分。接下来,我们就来简单说说每个部分的组成信息。

网络连接层

网络连接层位于整个MySQL体系架构的最上层,主要担任客户端连接器的角色。提供与MySQL服务器建立连接的能力,几乎支持所有主流的服务端语言,例如:Java、C、C++、Python等,各语言都是通过各自的API接口与MySQL建立连接。

数据库服务层

数据库服务层是整个数据库服务器的核心,主要包括了系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存等部分。

连接池

主要负责存储和管理客户端与数据库的连接信息,连接池里的一个线程负责管理一个客户端到数据库的连接信息。

系统管理和控制工具

提供数据库系统的管理和控制功能,例如对数据库中的数据进行备份和恢复,保证整个数据库的安全性,提供安全管理,对整个数据库的集群进行协调和管理等。

SQL接口

主要负责接收客户端发送过来的各种SQL命令,并将SQL命令发送到其他部分,并接收其他部分返回的结果数据,将结果数据返回给客户端。

解析树

主要负责对请求的SQL解析成一棵“解析树”,然后根据MySQL中的一些规则对“解析树”做进一步的语法验证,确认其是否合法。

查询优化器

在MySQL中,如果“解析树”通过了解析器的语法检查,此时就会由优化器将其转化为执行计划,然后与存储引擎进行交互,通过存储引擎与底层的数据文件进行交互。

缓存

MySQL的缓存是由一系列的小缓存组成的。例如:MySQL的表缓存,记录缓存,MySQL中的权限缓存,引擎缓存等。MySQL中的缓存能够提高数据的查询性能,如果查询的结果能够命中缓存,则MySQL会直接返回缓存中的结果信息。

存储引擎层

MySQL中的存储引擎层主要负责数据的写入和读取,与底层的文件进行交互。值得一提的是,MySQL中的存储引擎是插件式的,服务器中的查询执行引擎通过相关的接口与存储引擎进行通信,同时,接口屏蔽了不同存储引擎之间的差异。MySQL中,最常用的存储引擎就是InnoDB和MyISAM。

InnoDB和MyISAM存储引擎需要小伙伴们重点掌握,高频面试考点,也是成为架构师必知必会的内容。

系统文件层

系统文件层主要包括MySQL中存储数据的底层文件,与上层的存储引擎进行交互,是文件的物理存储层。其存储的文件主要有:日志文件、数据文件、配置文件、MySQL的进行pid文件和socket文件等。

日志文件

MySQL中的日志主要包括:错误日志、通用查询日志、二进制日志、慢查询日志等。

  • 错误日志

主要存储的是MySQL运行过程中产生的错误信息。可以使用下面的SQL语句来查看MySQL中的错误日志。

show variables like '%log_error%';
  • 通用查询日志

主要记录MySQL运行过程中的一般查询信息,可以使用下面的SQL语句来查看MySQL中的通用查询日志文件。

show variables like '%general%';
  • 二进制日志

主要记录对MySQL数据库执行的插入、修改和删除操作,并且也会记录SQL语句执行的时间、执行的时长,但是二进制日志不记录select、show等不修改数据库的SQL。主要用于恢复数据库的数据和实现MySQL主从复制。

  • 查看二进制日志是否开启。

show variables like '%log_bin%';
  • 查看二进制日志的参数

show variables like '%binlog%'
  • 查看日志文件

show binary logs;
  • 慢查询日志

慢查询主要记录的是执行时间超过指定时间的SQL语句,这个时间默认是10秒。

查看是否开启慢查询日志

show variables like '%slow_query%';

查看慢查询设置的时长

show variables like '%long_query_time%'

数据文件

数据文件中主要包括了:db.opt文件、frm文件、MYD文件、MYI文件、ibd文件、ibdata文件、ibdata1文件、ib_logfile0和ib_logfile1文件等。

  • db.opt文件

主要记录当前数据库使用的字符集和检验规则等信息。

  • frm文件

存储数据表的结构信息,主要是数据表相关的元数据信息,包括数据表的表结构定义信息,每张表都会有一个frm文件。

值得注意的是:MySQL8版本中的innodb存储引擎的表没有frm文件。(后面专门写一些MySQL8新特性的文章,从使用到底层原理与MySQL5到底有何不同)。

  • MYD文件

MyISAM存储引擎专用的文件格式,主要存放MyISAM存储引擎数据表中的数据,每张MyISAM存储引擎表对应一个.MYD文件。

  • MYI文件

MyISAM存储引擎专用的文件格式,主要存放与MyISAM存储引擎数据表相关的索引信息,每张MyISAM存储引擎表对应一个.MYI文件。

  • ibd文件

存放Innodb存储引擎的数据文件和索引文件,主要存放的是独享表空间的数据和索引,每张表对应一个.ibd文件。

  • ibdata文件

存放Innodb存储引擎的数据文件和索引文件,主要存放的是共享表空间的数据和索引,所有表共用一个(或者多个).ibdata文件,可以根据配置来指定共用的.ibdata文件个数。

  • ibdata1文件

MySQL的系统表空间数据文件,主要存储MySQL的数据表元数据、Undo日志等信息。

  • ib_logfile0和ib_logfile1文件

MySQL数据库中的Redo  log文件,主要用于MySQL实现事务的持久性。如果在某个时间点MySQL发生了故障,此时如果有脏页没有写入到数据库的ibd文件中,在重启MySQL的时候,MySQL会根据Redo  Log信息进行重做,将写入Redo Log并且尚未写入数据表的数据进行持久化操作。

配置文件

用于存在MySQL所有的配置信息,在Unix/Linux环境中是my,cnf文件,在Windows环境中是my.ini文件。

pid文件

pid文件是存放MySQL进程运行时的进程号的文件,主要存在于Unix/Linux环境中,具体的存储目录可以在my.cnf或者my.ini文件中进行配置。

socket文件

socket文件和pid文件一样,都是MySQL在Unix/Linux环境中运行才会有的文件。在Unix/Linux环境中,客户端可以直接通过socket来连接MySQL。

到此,相信大家对“什么是MySQL体系架构”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

什么是MySQL体系架构

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL架构体系

MySQL基本架构(一条SQL语句的执行过程)MySQL主要可以分为Server层和存储引擎层。Server层包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持Inno
MySQL架构体系
2018-05-07

MySQL架构体系是怎样的

本篇内容主要讲解“MySQL架构体系是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL架构体系是怎样的”吧!一 : 数据库和数据库实例 在MySQL的学习研究中,存在两个非常容易混
2023-06-05

MySQL的体系架构

文章目录 前言MySQL的Server层MySQL的存储引擎1)InnoDB 存储引擎2)MyISAM 存储引擎3)Memory 存储引擎 前言 在学习一种事务之前,我们需要先了解事物的基本组成结构,清楚了事物的基本组成结
2023-08-16

HBase整体架构是什么

小编给大家分享一下HBase整体架构是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!HBase 系统架构图组成部件说明   Client:   使用HBase
2023-06-03

Java架构体系是怎样的

这篇文章主要讲解了“Java架构体系是怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java架构体系是怎样的”吧!一 。性能优化深入内核,直击故障,拒绝蒙圈二。应用框架 源码解读站在巨
2023-06-02

什么是Oracle的体系结构

Oracle的体系结构是指Oracle数据库系统的组成部分和相互之间的关系。Oracle的体系结构主要包括以下几个组成部分:实例(Instance):实例是Oracle数据库系统在内存中运行的进程集合,它包括了多个后台进程和内存结构,负责管
什么是Oracle的体系结构
2024-03-02

ADO.NET的体系结构是什么

这篇文章主要讲解了“ADO.NET的体系结构是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET的体系结构是什么”吧!对于ADO.NET体系结构的学习,首先碰到的就是环境的配置
2023-06-17

Kafka的体系架构是怎样的

这期内容当中小编将会给大家带来有关Kafka的体系架构是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、什么是Kafka?数据工程中最具挑战性的部分之一是如何从不同点收集和传输大量数据到分布式系统
2023-06-02

mysql数据库是什么架构

mysql遵循客户端-服务器架构,组件包括:客户端:发送查询和接收响应。服务器:存储和管理数据,响应客户端查询。引擎:管理数据存储和检索,不同引擎提供不同的功能和优化选项。MySQL数据库的架构MySQL是一种关系型数据库管理系统(RDB
mysql数据库是什么架构
2024-04-14

编程热搜

目录