>首页> IT >

一起聊聊MySQL逻辑体系架构

时间:2022-03-15 17:34:23       来源:转载
本篇文章给大家带来了关于mysql中的相关知识,其中主要介绍了mysql逻辑体系架构的相关问题,大致架构分为三层,分别用于连接线程处理、包含大部分mysql核心服务和包含存储引擎,希望对大家有帮助。

推荐学习:mysql学习教程

Mysql逻辑体系架构(大致架构分为三层)

第一层:连接线程处理

客户端——>连接线程处理(连接处理,授权认证,安全)

第二层:包含大部分mysql核心服务

查询缓存——>解析器——>优化器——>执行查询

第三层:包含存储引擎

存储引擎负责mysql中数据的存储和提取(和Linux下的文件系统类似)

Mysql逻辑体系架构—详细介绍(分为八个步骤)

1.Connectors

指的是不同预言中与SQL的交互

2. Enterprise Management Services & Utilities

系统管理和控制工具

3. Connection Pool(连接池)

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

负责监听对MySQL Server的各种请求,接受连接请求,转发所有连接请求到线程管理模块。

每一个连接上MySQL Server的客户端请求都会被分配(创建)一个连接线程为其单独服务,并对连接线程进行了缓存,因此不需要为每个client连接单独创建和销毁,而连接线程的主要工作就是负责MySQL Server与客户端的通信,接收客户端的命令请求,传递Server端的结果信息,线程管理模块则负责管理维护这些连接线程,包括线程的创建,线程的cache等等

4.SQL Interface(SQL接口)

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

5.Parser(解析器)

SQL命令传递到解析器的时候会被解析器验证和解析,解析器是由Lex和YACC实现的,是一个很长的脚本,在MySQL中我们习惯将所有Client端发给Server端的命令都称为query,在MySQL Server里面,连接线程接收到客户端的一个Query后,会直接将query传递给专门负责将各种Query进行分类然后转发给各个对应的处理模块

主要功能:

a. 将SQL语句进行语义和语法分析,分解成数据结构,然后按照+同的操作类型进行分类,做出针对性的转发到后续步骤,以后SQL语句的传递和处理就是基于这个结构的

b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的

6.Optimizer(查询优化器)

SQL语句在查询之前会使用查询优化器对查询进行优化,就是优化客户端请求query,根据客户端请求的query语句和数据库中的一些统计信息,在一系列算法基础上进行分析,得出一个最优策略,告诉后面的程序如何取得这个query语句的结果,使用的是 “选取-投影-联接” 策略进行查询;
比如:select uid,name from user where gender=1;
这个查询语句先根据where后面的语句进行选取,而不是先将表全部查询出来以后再进行gender过滤,然后根据uid和name进行属性投影,而不是将所有的属性全部取出来以后再进行过滤,最后将这两个查询条件联接起来生成最终的查询结果

7.Cache 和 Buffer(查询缓存)

主要功能是将客户端提交给 Mysql 的 Select的类query请求的返回的结果集cache到内存中,与该query的一个hash值做一个对应,该query所取数据的基表发生任何数据的变化之后,MySQL会自动使该query的Cache失效,在读写比例非常高的的应用系统中,Query Cache对性能的提高是非常显著的,当然它对内存的消耗也是非常大的。
如果查询缓存中有有效的命中查询结果,查询语句就可以直接去查询缓存中取数据,这个缓存机制是由一系列小缓存组成的,比如表缓存,记录缓存,Key缓存,权限缓存等等

8.pluggable storage Engines(插件式存储引擎)

存储引擎接口:MySQL区别于其他数据库的最重要的特点就是其插件式的表存储引擎。

MySQL插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统都必须的,比如SQL分析器和优化器等,而存储引擎是底层物理结构的实现。每个存储引擎开发者都可以按照自己的意愿进行开发。

9.file system

文件系统,数据,日志(redo,undo)索引,错误日志,查询记录,慢查询等

注意:存储引擎是基于表的,而不是数据库

数据库的工作流程

最上层:客户端连接

第二层:核心服务

第三层:数据库引擎层

FAQ分析

1.什么是插件式存储引擎

2.什么是LRU缓存

在JVM中Ehcache的缓存策略包含

LRU - least recently used(最近最少使用)

LFU - least frequently used(最不经常使用)

FIFO - first in first out, the oldest element by creation time(清除最早缓存的数据,不关心是否经常使用)

推荐学习:mysql教程

以上就是一起聊聊MySQL逻辑体系架构的详细内容,更多请关注php中文网其它相关文章!

关键词: 文件系统 查询语句 查询优化