欢迎您访问无忧自考网!

mysql数据库入门第2版电子版(mysql从入门到精通)

更新时间:2023-01-17 22:48:31作者:51data

mysql的工作原理对于刚接触Mysql的朋友来说,有必要从它的工作原理入手,搞清楚这个东西的来龙去脉,为进一步的学习做铺垫。掌握它的原理有助于我们从整体上把握这个东西,有助于我们在排除故障的过程中理清思路。接下来,我们从mysql的工作原理说起。这是一个经典的图表:

Mysql内部架构

上图显示了mysql的内部架构。可以清楚的看到,Mysql是由sql接口、解析器、优化器、缓存和存储引擎组成的。

mysql数据库入门第2版电子版(mysql从入门到精通)

- - -

引言:1。连接器

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

2.管理服务实用程序

系统管理和控制工具

3.连接池(连接池)

管理用户连接、线程处理和其他缓存需求。

4.SQL接口(SQL接口)

接受用户的SQL命令,返回用户需要的结果查询。例如Select from,就是调用SQL接口。

5.分析器(解析器)

当SQL命令传递给解析器时,解析器将对其进行验证和解析。

主要功能:

A.将SQL语句分解成数据结构,并将这种结构传递给后续步骤,后期SQL语句的传输和处理就是基于这种结构。

B.如果在分解中遇到错误,说明这个sql语句不合理,语句不会继续执行。

6.优化器(查询优化器)

之前查询,SQL语句会被查询 optimizer优化(生成多个执行计划,最后数据库会选择优化后的计划执行,结果会尽快返回)。他使用“选择-项目-加入”策略来执行查询。

用一个例子来理解:select uid,name from性别=1的用户;

这个select查询首先根据where语句进行选择,而不是在性别筛选之前列出所有的表查询。

这个select查询先根据uid和名称进行属性投影,而不是在所有属性都取出后再进行筛选。

连接这两个查询条件,生成最终的查询结果。

7.缓存和缓冲区(查询缓存)

如果查询缓存有hit查询结果,则查询语句可以直接转到查询缓存以获取数据。

这种缓存机制由一系列小型缓存组成。如表缓存、记录缓存、键缓存、许可缓存等。

8.引擎(存储引擎)

存储引擎是MySql中处理文件的特定子系统。也是Mysql最有特色的地方。

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

- - -

SQL语句执行过程

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

首先,程序请求将通过连接器与mysql交互。当请求无处不在时,它们将被临时存储在连接池中,并由处理器管理(管理服务实用程序)。当请求从等待队列进入处理队列时,管理器会将请求抛出到SQL接口。SQL接口收到请求后,会对请求进行哈希处理,并与缓存中的结果进行比较。如果完全匹配,会直接通过缓存返回处理结果。否则,需要一个完整的过程:

(1)由SQL接口抛给后面的解释器。如上所述,解释器会判断SQL语句是否正确,如果正确,就会转换成数据结构。

(2)解释器处理完之后,会来到优化器的后面,会生成各种各样的执行计划。最后,数据库会选择优化后的方案执行,并尽快返回结果。

(3)最优执行计划确定后,SQL语句可以由存储引擎处理,存储引擎会从后端存储设备获取相应的数据,并按原方式返回给程序。

这里有几点需要注意:

(1)如何缓存查询数据?

当存储引擎处理数据并将其返回给程序时,它还会在缓存中保留数据的副本,以便更快地处理下一个相同的请求。具体来说,mysql会对查询的语句和执行结果进行哈希处理,保存在缓存中,以备下次使用查询。

(2)2)缓冲区和缓存有什么区别?

从上图可以看出,实际上有两个缓存,buffer和cache。两者有什么区别吗?简单地说,buffer是写缓存,cache是读缓存。

(3)如何判断所需数据是否已经缓存在缓存中?

这里可能有误解。我觉得在处理SQL语句的时候,为了判断查询的结果是否已经缓存,我会贯穿整个过程。得到执行结果后,我会和要求的进行比较,看是否命中。基于此,既然不管查询的内容是否缓存在缓存中,我都要走完整个流程,那么缓存有什么好处呢?

其实并不是这样的。在第一次查询之后,mysql对语句查询和结果查询进行哈希运算并保存在缓存中。SQL查询到达后,比较两个哈希值。如果它们是相同的,它们就命中。否则就需要走完整个流程。

后面会分享更多关于DBA和devops的内容,感兴趣的朋友可以关注一下!

为您推荐

5分钟打动人心的演讲稿(5分钟发言稿多少字)

导读:数据库索引是一个不可忽视的点,索引建的好可以让查询速度变快,但是相反不适当的建立索引反而会带来不利的影响,本文将通过四个问题来讨论索引概念以及如何合理使用索引,希望对各位有所帮助。以下是四个问题为什么要给表加上主键?为什么加索引后会使

2023-01-17 22:45

数据库系统原理:第一章 数据库系统概述

第一节 数据库基本概念 1. 数据:描述事物的符号记录,是指用物理符号记录下来的,可以鉴别的信息。 2. 数据库:存储数据的仓库,是指长期存储在计算机中,有组织可共享的数据集合。 3. 数据库管理系统:是指专门用于建立和管理数据库的软件,介

2023-01-17 22:45

深入了解数据库原理及底层

1. 请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?SQL 标准定义的四个隔离级别为:read uncommited :读到未提交数据read committed:脏读,不可重复读repeatab

2023-01-17 22:42

为什么你精通CRUD,却搞不懂数据库的基本原理?

作者:黄小斜来源:https://juejin.im/post/5e5528b7e51d4526ce61451d本文思维导图​数据库和关系型数据库作为一个程序员,不了解数据库怎么能行,那么数据库到底是个啥呢,作为一个Java工程师,平时和数

2023-01-17 22:42

迎新年文案简短(迎新年文案开场白)

视频加载中...姚景源(国务院参事室特约研究员、国家统计局原总经济师):我特别赞成这点,我们现在的主要矛盾,已经变成了要满足人民群众对美好生活日益增长的需要,我们千万不要把人民群众对美好生活的需要,看作是一个文学描述,它是一个实实在在的存在

2023-01-17 22:39

决定社会经济制度变更的经济规律是(股市牛熊分界线)

一、深度逻辑——经济规律是如何决定股市牛熊的(2022-12-9)1、股市里面要想做强者,必须把一些基本的规律搞懂,经济规律是如何决定股市牛熊的?必须要深刻的理解,股市是跟经济相关联的,经济增速越高,股市表现就越强。反之,经济增速下降,下降

2023-01-17 22:39

加载中...