Mysql基本原理

《Mysql基本原理》要点:
本文介绍了Mysql基本原理,希望对您有用。如果有疑问,可以联系我们。

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

Mysql基本原理

下面是关于上图的介绍:

1.客户端connectors

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

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

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

2.Management Serveices & Utilities

系统管理和控制工具

3. Connection Pool (连接池)

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

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中,等待下次查询.

编程之家培训学院每天发布《Mysql基本原理》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

相关文章

在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信...
> [合辑地址:MySQL全面瓦解](https://www.cnblogs.c...
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时...
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括...
navicat查看某个表的所有字段的详细信息 navicat设计表只能一...
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起...