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

MySQL内核概述

发布时间:2022-10-25 15:39:59 所属栏目:MySql教程 来源:未知
导读: Mysql内核概述Mysql体系结构
MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是MySQL基本上能保

Mysql内核概述Mysql体系结构

MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。

MySQL由以下几部分组成:

- 连接池组件

- 管理服务和工具组件

- 查询分析器组件

- 优化器组件

- 缓冲组件

- 插件式存储引擎

- 物理文件

Connection:不同语言与SQL的交互Management Serveices &Utilities:系统管理和控制工具—备份和恢复的安全性,复制,集群,管理,配置,迁移和元数据。Connection Pool:连接池—进行身份验证,线程重用,连接限制,检查内存,数据缓冲;管理用户的链接,线程处理等需要缓冲的需求。SQL Interface:SQL接口—进行DML,DDL,存储过程,视图,触发器等操作和管理;用户通过SQL命令来查询所需要结果。Parser:解析器—查询翻译对象的特权;SQL命令传递到解析器的时候会被解析器验证和解析。Optimize:查询优化器—访问路径的统计数据;Cache和Buffer:查询缓冲器—全局和引擎特定的缓冲和缓冲区;Pluggable Storage Engine:插件式存储引擎; Mysql源码组织结构 MySQL数据结构

1.THD线程描述符(sql/sql_class.h)—包含处理用户请求时需要的相关数据,每个连接会有一个线程来处理,有一些高层函数中,次数据结构常被当作第一个参数传递。THD类中包含线程的许多用户信息。处理客户端的连接不是线程的唯一用途,MySQl还有一些系统线程,如从服务器复制进程和信号处理线程。

2.NET网络连接描述符(sql/mysql_com.h)–网络连接描述符,对内部数据包进行了封装,是client和server之间的通信协议。

3.Item SQL表达式–Item用于实现表达式,如查询条目,函数,where,order,group,on子句等。每个Item类的实例都包含:a sql语句中某项的类似物,如where.b 一个值。c 数据类型描述符只要mysql与sql语句打交道,在赋值,比较,聚合和验证一个sql元素时,你就会发现mysql在使用item类与它的子类。

4.TABLE数据库表描述符(sql/table.h)–表定义了MySQL数据库表在MySQL内存中的形式。表以两种形式存在–打开或者关闭状态。MySQL要想使用表,必须先将其打开。表描述类是在被打开时创建。表描述类创建后被置于表缓冲(table_cache)中,等待下一个查询的重用,以提高访问的效率。数据库表描述符,,分成TABLE和TABLE_SHARE两部分。

5.FIELD字段描述符(sql/field.h)–域描述符mysql内核,对列数据类型以及属性的定义,是各种字段的抽象基类。

MySQL算法

1.排序算法:MySQL排序采用sort_buffer_size设定的线程独占内存进行排序,如果缓冲内放下要排序的数据,那么MySQL会采取载入所有要返回的值进入缓冲排序;如果缓冲放不下,则把要排序的列放入缓冲排序,然后再回表查询返回结果,如果依然放不下,就会采用归并排序,排好序的部分放入磁盘,载入未排好序的部分继续在内存中排序,然后和磁盘上的部分二路归并,知道排序全部完成。

2.连接算法:MySQL关联采用join_buffer_size设定的线程独占内存进行join操作,join过程会采用下推算法,如果有where条件,mysql会进行过滤,然后采用关联字段去匹配驱动表,这样可以有效减少参与关联的记录数。

3.缓冲算法:MySQL缓冲采用LRU算法,由系统维护一个LRU双向链表。

MySQL主要执行过程

从架构上来看,Mysql服务器对于一条SQL语句的执行过程可以分成如下几部分:

接受命令 包括用户验证,资源申请等

|

V

命令解析 解析SQL语句,生成语法树

|

V

寻找执行计划 根据解析出来的语法树,找到可能的执行计划。对于一条SQL语句,很可能会有多种执行方案,特别是在SQL语句比较复杂的时候。这里需要对于各种可能的方案进行代价评估,最快的找到最有的执行方案。

|

V

优化执行计划 优化执行计划。这是SQL执行中最复杂的部分之一,据说全都是由数学博士们写出来的,而且比较难懂。我目前还处于不懂的状态。

|

V

执行 没啥可说的,只剩执行及返回结果了

Mou icon

(编辑:源码门户网)

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