加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql基本原理

发布时间:2022-11-03 14:00:44 所属栏目:MySql教程 来源:网络
导读: 从MySQL的原理入手,先看一张经典的图:

下面是关于上图的介绍:
1.客户端connectors
与其他编程中的sql语句进行交互,如:Java、PHP;
每个客户端链接都会在服务器进程中拥有一个线程,这

从MySQL的原理入手,先看一张经典的图:

mysql原理_mysql原理_mysql分页查询原理

下面是关于上图的介绍:

1.客户端connectors

与其他编程中的sql语句进行交互,如:Java、PHP;

每个客户端链接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或CPU中运行。服务器会负责缓存线程,因此不需要为每一个新建的连接创建和销毁线程。

一般情况,客户端链接到mysql服务器时,服务器需要对其进下认证,认证基于用户名、原始主机信息和密码。如果使用了安全套接字SSL的方式连接,一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限。

2.Management Serveices & Utilities

系统管理和控制工具

3. Connection Pool (连接池)

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

1、2、3——主要用于连接处理,授权认证,安全等,大多数基于网络的客户端/服务器的工具都有类似的架构

4. SQL Interface (SQL接口)

接受用户的SQL命令,并且返回用户需要查询的结果。

(SQL接口接收到请求后,它会将请求进行hash处理并与缓存中的结果进行对比,如果完全匹配则通过缓存直接返回处理结果)

5. Parser (解析器)

SQL命令传递到解析器的时候,会被解析器解析和验证

主要功能:

1.将sql分解成数据结构,并将这个结构传递到后续步骤,后续的sql的传递和处理就通过这个结构

2.后面分解过程中如果遇到了错误,那么就是这个sql出现了错误,将不会往后继续执行

6. Optimizer (查询优化器)

mysql会解析查询,并创建内部数据结构(解析树),然后进行各种优化,比如:重写查询,决定表的读取顺序,选择合适的索引等。另外使用的是“选取-投影-联接”策略进行查询。

用一个例子就可以理解: select uid,name from user where gender = 1;

这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤

这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤

将这两个查询条件联接起来生成最终查询结果.

*优化器并不关心表使用的是什么存储引擎,但是存储引擎对于优化查询是有影响的,优化器会请求存储引擎提供容量或摸个具体操作的开销信息,以及表数据的统计信息(这里我也没太理解,照抄的)。

7. Cache和Buffer (查询缓存)

如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等

*对于select语句,在解析查询之前,服务器会先检查查询缓存,如果能够再其中找到对应的查询,服务器将不必再执行查询解析、优化和执行整个过程,而直接返回查询缓存中的结果集。(buffer是写缓存,cache是读缓存)

8.Engine (存储引擎)

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

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

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

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!