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

Mysql用户访问工作原理

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

Mysql用户访问工作原理

掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路。接下来,还是从mysql的工作原理开始入手,下面先来一张经典的图:

Mysql用户访问工作原理

上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。

下面是关于上述部件的介绍:

  1. connectors

    与其他编程语言中的sql 语句进行交互,如php、java等。

  2. Management Serveices & Utilities

    系统管理和控制工具

  3. Connection Pool (连接池)

管理缓冲用户连接,线程处理等需要缓存的需求

  1. SQL Interface (SQL接口)
    接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface

  2. Parser (解析器)
    SQL命令传递到解析器的时候会被解析器验证和解析。
    主要功能:
    a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,后面SQL语句的传递和处理就是基于这个结构的
    b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的,语句将不会继续执行下去

  3. Optimizer (查询优化器)
    SQL语句在查询之前会使用查询优化器对查询进行优化(产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果) 他使用的是“选取-投影-联接”策略进行查询。
    用一个例子就可以理解: select uid,name from user where gender = 1;
    这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤
    这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤
    将这两个查询条件联接起来生成最终查询结果.

  4. Cache和Buffer (查询缓存)
    如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
    这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等

8.Engine (存储引擎)

存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。

Mysql的存储引擎是插件式的。它根据MySql AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)

SQL 语句执行过程

数据库通常不会被直接使用,而是由其他编程语言通过SQL语句调用mysql,由mysql处理并返回执行结果。那么Mysql接受到SQL语句后,又是如何处理的呢?

首先程序的请求会通过mysql的connectors与其进行交互,请求到处后,会暂时存放在连接池(connection pool)中并由处理器(Management Serveices & Utilities)管理。当该请求从等待队列进入到处理队列,管理器会将该请求丢给SQL接口(SQL Interface)。SQL接口接收到请求后,它会将请求进行hash处理并与缓存中的结果进行对比,如果完全匹配则通过缓存直接返回处理结果;否则,需要完整的走一趟流程:

(1)由SQL接口丢给后面的解释器(Parser),上面已经说到,解释器会判断SQL语句正确与否,若正确则将其转化为数据结构。

(2)解释器处理完,便来到后面的优化器(Optimizer),它会产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果。

(3)确定最优执行计划后,SQL语句此时便可以交由存储引擎(Engine)处理,存储引擎将会到后端的存储设备中取得相应的数据,并原路返回给程序。

这里有几点需要注意:

(1)如何缓存查询数据?
存储引擎处理完数据,并将其返回给程序的同时,它还会将一份数据保留在缓存中,以便更快速的处理下一次相同的请求。具体情况是,mysql会将查询的语句、执行结果等进行hash,并保留在cache中,等待下次查询。

(2)buffer与cache的区别?

从上面的图可以看到,缓存那里实际上有buffer和cache两个,那它们之间是否有什么不同呢?简单的说就是,buffer是写缓存,cache是读缓存。

(3)如何判断缓存中是否已缓存需要的数据

这里可能有一个误区,觉得处理SQL语句的时候,为了判断是否已缓存查询结果,会将整个流程走一遍,取得执行结果后再与需要的进行对比,看看是否命中,并以此说,既然不管缓存中有没有缓存到查询内容,都要整个流程走一遍,那么缓存的优势又在哪里??

实际上,并非如此,在第一次查询后,mysql便将查询语句以及查询结果进行hash处理并保留在缓存中,SQL查询到达之后,对其进行同样的hash处理后,将两个hash值进行对照,如果一样,则命中,从缓存中返回查询结果;否则,需要整个流程走一遍。

免责声明:

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

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

Mysql用户访问工作原理

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

下载Word文档

猜你喜欢

FTP服务器工作原理及如何配置、访问

  FTP服务器,是在互联网上提供存储空间的计算机,它们依照FTP协议提供服务。FTP的全称是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议,简单的说,支持FTP协议的服务器就是FTP服务器。  目前在在网络上,如果你想把文件和其他人共享。最方便的办法就是莫过于将文件
FTP服务器工作原理及如何配置、访问
2024-04-18

mysql授予用户远程访问权限

MySQL 是一个流行的关系型数据库管理系统,用户可以使用 MySQL 在本地或远程服务器上存储和检索数据。在默认情况下,MySQL 数据库仅允许在本地主机上进行访问。如果您需要远程连接到 MySQL 数据库,您需要授予用户远程访问权限,并
2023-08-19

MySQL查询优化器工作原理

MySQL查询优化器是数据库管理系统(DBMS)中的一个关键组件,负责决定如何最有效地执行SQL查询。以下是MySQL查询优化器的工作原理:查询解析:当用户提交一个SQL查询时,查询优化器首先会解析这个查询,理解其结构和意图。优化器会识别
MySQL查询优化器工作原理
2024-10-20

MySQL SSL 连接的工作原理解析

MySQL是一款使用广泛的关系型数据库管理系统,它的安全性一直备受关注。SSL(Secure Socket Layer)是一种加密通信协议,用于提供安全的数据传输。MySQL SSL连接的工作原理即在MySQL数据库中使用SSL协议建立安全
2023-10-22

如何解决MySQL报错:拒绝访问MySQL用户

当MySQL报错拒绝访问MySQL用户时,可能是由于以下原因导致的:1. 用户名或密码错误:确保输入的用户名和密码是正确的。可以尝试重置密码并确保密码的大小写匹配。2. 权限问题:确认用户是否具有访问MySQL服务器的权限。可以通过使用管理
2023-10-12

编程热搜

目录