首页 > 数据库 >Mysql架构组成和存储引擎介绍

Mysql架构组成和存储引擎介绍

时间:2023-11-28 18:32:11浏览次数:44  
标签:存储 这个 架构 数据库 用户 我们 访问 Mysql 连接

Mysql架构图

我们来说明这个mysql架构图,每一个部分都有什么作用

Mysql架构组成和存储引擎介绍_数据库


Connectors

Mysql架构组成和存储引擎介绍_Mysql架构_02


Connectors翻译成叫连接器,

将来我们在工作中去访问数据库。并不会安装一个mysql的客户端,通过命令手工去敲命令。

大部分的用户呢,是不懂数据库的,但是他又需要访问数据库里的数据。

比方说我们在网上购物,那你去购买商品下订单背后实际上都有数据库。那么,这些数据库让用户直接去访问,用户根本不会写什么语句,所以通常来讲呢,都是由开发人员。写好一个比较直观的界面,

比方说图形界面呀啊,Web界面呀,总之用我们点鼠标,输两行字儿。那么就可以把这些信息读取,或者是输入到数据库里去,当然在这个过程中这个界面。包括他访问数据库的中间的这个过程都是程序员帮我们做好的。

那么程序员他在写这个界面访问数据库的时候。就需要通过一些语言来连接,提供用户界面,并且访问数据库,那么这时候呢,就涉及到各种开发语言。比方说咱们做网站比较常见的是php啊,当然目前来讲呢python啊,包括。JAVA等等语言都可以,那么这些语言开发出来的界面,让用户访问数据库。

用户不需要去关心背后的逻辑,他通过点鼠标就可以把它。用户通过点鼠标的这种行为,咱们的程序把它最终转换成SQL语句,然后发送给数据库进行执行。

当然,那么你这些语言要连接数据库,就需要有数据库和你语言进行连接的开发接口也就是API,mysql数据库要接收这种开发语言的连接。那么,这些语言都是通过各自对应接口的来连接数据库的接口API啊,

总之各种语言都有自己的连接数据库的API开发接口。


Connection Pool

那么,当我们连接到数据库以后,用户首先要进入到第一个数据库的模块翻译过来叫连接池。

下图这个就是连接池

Mysql架构组成和存储引擎介绍_数据库_03


那这个连接池呢?那么有可能有多个用户同时发请求。那么同时发请求的话,那么咱Mysql怎么去接收远程用户的连接呢?它是靠一个叫连接池的概念,也就是它有一个一个池,这个池里面呢,可以接收多个用户的连接。

每连接一个用户过来,我就开一个连接放在这里面,当然这个连接呢是有限制的。比方说,假设我们限制1000个。假设设置1000个,那连最多也就连接1000个用户过来,再1001个,我就连接不了了。

当然,如果有1000个连过来了,我能接受,那么如果还有一个人想连,那就等着那1000个的其中一个人离开,它在连接。

比方说有一个人连接过来访问完了,他就走了,走了以后呢,这个连接的这个位置就腾出来了,腾出来以后呢,新的用户就可以连进来了。他通过这样的一个连接进来,那这个呢,就叫连接池。


那么其中呢,我们这个连接池除了连接远程用户,接收远程用户的连接功能,还提供了以下这些功能

Mysql架构组成和存储引擎介绍_Mysql架构_04

Authentication

比方说验证(Authentication),那我们要支持你连接你光连进来不行啊,凭什么你连进来我就能接收你来处理你呢?你是不是要经过验证才可以啊?你必须要经过合法的用户印信息验证之后,才能接收你的处理的各种语句的执行。

Thread Reuse

Thread Reuse线程的复用,那线程复用什么意思呢?就是一个用户连过来,我们系统会分配一个线程。数据库呢,是以线程的方式来运行的,

也就是说,一个用户连进来,他执行命令,或者是连接进来,他都要消耗一个线程啊,当然这个线程如果没人用了,退出了,他也会把这个线程再清理清理,然后置为空闲状态,等待着下一个用户的连接,为外部提供服务。

Connection Limits

怎么理解着连接限制呢?

因为connection的连接数也并不是无穷无尽的啊,我们可以来。来约定最多有多少个用户的连接数据库,

    那默认情况,它的限制比较低,也就100多个。啊,这个值设的保守,我们生产中当然适当的也要调大,但是你要调的过大的话,也会带来一个问题就是。

如果用户大量的都来了,蜂拥而至,明明你的服务器达不到那个要求,你非要设一个超大的值。啊超出了他的处理能力,就像你的饭店,明明只能接收100个人,结果呢,你对外放号儿放了1000个人。

那么,这1000个客人同时蜂拥而至,那想想这就带来的一个什么结果?是不是谁都别吃了?那1000个人都有都有这个资格,你说给谁吧, 到最后这个饭店就炸了是吧?就崩了。


Check Memory

这个表示内存的检查


Caches

这个缓存他可以把一些数据提前缓存在我们的数据库的里面,下次访问,可以速度更快

SQL Interface

就是下图这个东西

Mysql架构组成和存储引擎介绍_数据库_05

连接池接收了用户以后,那么用户呢,就可以发送SQL语句了,发送语句的时候,他可以执行这些语句。

通过SQL interface这个模块儿来处理用户发过来的请求

可以检查这些用户执行的这个语句的,这个正确与否,比方说你的语法是不是有误吧?是不是少了个分号?是不是语法是不是敲错了?

Parser

这是是有什么作用呢?

Mysql架构组成和存储引擎介绍_Mysql架构_06

这个就是优化。如果你的语法没有问题,那么你发了一个的查询语句,我们现在我们不是直接就给你执行的。

我们可能还要做一些优化。这个优化呢,中间可能要把你写的SQL语句按照可以优化的方式。进行转换,转换一种相对更合理的啊方式,,所以它这个地方有一个解析的过程啊,解析的过程,把你的SQL语句给你解析一下。

解析完了以后呢?当然我们这个地方还有一个对象的权限的检查,比方说你去查询某个表,那这个表给你权限没有?

因为我们在上次在这个权限的时候提到过,还有一个所谓的啊,权限的级别问题可以在数据库级别。表级别甚至可以精确到字段级别,那你去查这个表,你有没有这个权限啊?你这个字段你要查有没有这个字段的权限啊?对吧?这地方都要做。相应的这个处理啊,所以这个过程,叫解析的过程啊。

Optimizer


Mysql架构组成和存储引擎介绍_Mysql架构_07


这个就是优化的过程,这个优化的过程就是我们发过来这个指令,以后那么到底我们按照哪种方式来访问?这个访问方式呢,实际上对于我们数据库尤其查询来讲,它是有多种访问方法的,这个叫Access Paths,叫访问路径

在数据库中,它有一个优化器,这样的一个模块,这个模块可以根据你。的优化结果。

比方说他斟酌比较了多种方法,发现有一条方法是相对比较好的,所以他就会选择这条路径嗯,就像我们每个人。那选择一个适合你的路径,对吧?好,这就是优化的过程.

Caches&Buffers

Mysql架构组成和存储引擎介绍_存储引擎_08

优化的过程完了以后呢,我们进入到缓存啊

他会利用缓存来进行一些统计呀。包括还有一些这个优化呀,如果有缓存可以利用的话,当然缓存是比较好的。

另外呢,我们有些时候把数据要写入到磁盘里面去。可以先放到buffer缓冲区里面,过一段儿时间再写这些呢,都是我们数据库中在处理过程中它的一些这个模块。


存储引擎概念的引入

我们看最后这个部分

Mysql架构组成和存储引擎介绍_数据库_09

我们真正要访问数据的话,那么这个数据都是在通常是在磁盘上放着的

那么数据在,磁盘上放的话呢,这个数据。我们通常为了安全都是配套的,有各种日志的,所以在数据库中我们会发现有各种各样的日志。它比我们传统的应用复杂很多,传统的应用呢,一般来讲就是一个普通的日志就完了。

在数据库中,它的日志特别多。有什么重做日志、维度日志啊,这个数据包括还有索引,包括二进制。包括还有什么错误日志,等等吧,有很多。

尤其我们最核心的就是数据。数据是保存在磁盘上的,那么怎么去把这些前面我们用户发请求最终转换成?访问磁盘文件呢?那背后有一些软件帮我来实现这个过程,就叫存储引擎。

Mysql架构组成和存储引擎介绍_数据库_10


在数据库里面有一个叫存储引擎的概念,这个存储引擎是个软件模块,它可以把我们。访问磁盘上,这些数据的这些具体的形式由存储引擎来进行约定。

比方说,不同的存储引擎。它存放磁盘上的文件的格式是不一样的,那么存放文件的啊,这个类型不一样,存放的这个文件后缀不一样,存放的二进制形式不一样。内部机制不一样,不同的存储引擎决定了如何来存放在磁盘上,这是不一样的。

那目前来讲呢,比较主流的存储引擎有MyISAM和 InnoDB

我们再来看一下这个架构图,看一看

Mysql架构组成和存储引擎介绍_数据库_11









标签:存储,这个,架构,数据库,用户,我们,访问,Mysql,连接
From: https://blog.51cto.com/u_14743944/8604385

相关文章

  • mysql问题
    版本问题`create_time`datetime(0)NULLDEFAULTCURRENT_TIMESTAMP(0)COMMENT'创建时间'一直报错,在办公的数据库则可以正常执行,经过查询,自己电脑版本是5.5.xx,办公版本是5.7.xx,然后在网上查询卸载又重新安装,运行上述建表语句一次成功;......
  • linux存储管理中的基本分区
    在Linux存储管理中,了解基本分区是非常重要的。总结如下:1.主引导记录(MBR)分区:MBR分区是传统的分区方式,它将硬盘的第一个扇区用于引导代码和分区表。MBR分区最多支持4个主分区,或者3个主分区和1个扩展分区。2.扩展分区:扩展分区是MBR分区中的一种特殊类型,它可以包含多个逻辑分区。......
  • mysql主从同步详细教程
    mysql主从同步详细教程 1、安装好主数据库和从数据库,这个大家肯定都会,如果不是很明白,可以参考我前面的安装教程。例子:假如我需要同步test1、test2数据库  系统:centos7主库主机:192.168.1.252 从库主机:192.168.1.251  端口都是:33062、主数据......
  • MySQL5.6建索引时遇到 Specified key was too long; max key length is 767 bytes错误
    解决方法//查看showvariableslike"innodb_large_prefix";showvariableslike"innodb_file_format"; //修改最大索引长度限制 setglobalinnodb_large_prefix=1;或  setglobalinnodb_large_prefix=on;setglobalinnodb_file_format=BA......
  • 存储管理
    1.存储方式1.1从存储连接方式区分本地存储:例如DellR730本地磁盘外部存储:scsi线、stat线、sas线、FC线网络存储:以太网络、FC网络1.2从工作原理区分机械HDD固态SSD1.3从磁盘尺寸区分3.52.51.81.4从插拔方式区分热插拔非热插拔1.5从硬盘主要接口区分IDE......
  • 亚马孙对象存储流的转化(s3 browser)
    S30bjects30bject=smsFileUploadAndDown.getobjectRequest(filePath);StringdownloadName=StringUtils.substringAfterLast(filePath,separator:"/");response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);FileUtils.setAttachmentResponseH......
  • 存储管理
    作为一位大学生,近期我深入学习了Linux操作系统中的存储管理,这是Linux系统中至关重要的一部分。存储管理涉及到文件系统、磁盘分区、磁盘挂载等方面,对于合理利用硬件资源和提高系统性能至关重要。在本文中,我将分享我所学到的知识,并结合实际案例进行深入解析。文件系统文件系统概......
  • 05Linux存储管理
    Linux存储的基本管理1.基本分区fdisk-l查看磁盘分区情况lsblk设备使用情况blkid设备管理方式及设备iddf查看正在被系统挂载的设备cat/proc/partitions查看系统识别设备2.设备挂载mount-o挂载参数device挂载点umount设备|挂载点mount查看挂载信息mount-orw/de......
  • iOS-打包上架构建版本一直不出现/正在处理/自动消失
    ​iOS开发过程中,打包上架苹果审核是一个不可或缺的环节。说实话,这个问题我遇见两次了,为了让自己长点记性,决定写下来。首先,列举几种情况:1.iPa包上传至Appstore后,一个小时内不显示构建版本。(等待15分钟-25分钟是正常的)   ​ 2.“活动”栏目下,所有构建版本长时间显示“......
  • ​​MySQL 指令​​
    MySQL指令基本概念SQL指令SQL指令是用于访问和处理数据库的标准的计算机语言。对于MySQL等常用数据库都可以通过使用SQL访问和处理数据系统中的数据。注意事项SQL对大小写不敏感。标识符应避免与关键字重名!可用反引号(`)为标识符包裹。注释单行注释:#注释内容多行注释:/*......