mysql之mysql组件和工作原理

mysql组成:

连接管理器
        负责监听在某个端口套接字上,并接受用户请求。

线程管理器:
        负责给用户的请求生成新的线程,在请求完成后负责销毁进程或完成进程的重用。

用户模块:
        验证用户是否有权限连接服务器。验证用户的身份。

命令分发模块:
        根据查询的不同类型,和缓存模块交互,和日志模块交互。若缓存中没有则交给解析器处理,需要记录日志的交给日志模块。

解析器:
        解析查询的法和词法,再次查询缓存,没有则生成解析树。若是SELECT则交给查询优化器。若是UPDATE、DELETE、INSERT、CREATE等则交给表定义模块,REPARE交给表维护模块。

缓存管理器:
        负责管理缓存。
        置换策略:使用置换策略来保证有效的内存空间。
        一般采用最近最少思路,即最近一段时间按内最少使用的块被置换出去。
        某些不想置换的块可以设定为被钉住的块。

日志管理器:
        记录日志。

查询优化器:
        对解析树进行优化,优化为在服务器上执行开销最小,速度最高的执行模式。

表定义模块(表修改模块):
        检查用户跟表操作相关数据的完整性和权限。
        负责表的创建、删除、重命名、移除、更新、插入等操作。

表维护模块:
        用来修复表的逻辑错误等。检查用户权限。
        负责表的检查、修改、备份、恢复、优化(碎片整理)、解析。

状态报告模块:
        更新操作执行状态报告信息。

复制模块:
        负责数据同步等。

访问控制模块:
        检查用户是否有完成对应操作的权限。

表管理器:
        负责和存储引擎接口交互,根据表定义模块的操作,将表定义转换为文件。负责创建、修改读取表定义文件。

表定义文件用来储存表结构。

维护表描述符高速缓存:
            通常会把表定义和名称缓存在内存中,表在读取之后,表的格式也会缓存在内存中。

管理表锁。
            一个用户修改表内容时其他用户不能操作。

和表定义模块和表维护模块协同操作。

存储引擎:
        插件式的。负责表示层和物理层的双向转换。
        和磁盘上的数据进行交互。

mysql工作流程。

用户请求-->连接管理器(负责接收)-->线程管理器(生成线程)--> 用户模块(验证身份,通过则建立连接,为通过则拒绝)--> 连接已建立。

用户发送查询语句-->命令分发模块(查询缓存,记录日志。缓存中没有则分发命令)-->解析器(解析语句,查询缓存,生成解析树)--> 查询优化器 |表定义模块|表维护模块|状态报告模块|复制模块 -->访问控制模块(验证用户权限)--> 表管理器 (表结构操作,表锁管理,缓存管理)--> 存储引擎 (文件操作)

时间: 2024-08-01 06:36:45

mysql之mysql组件和工作原理的相关文章

Mysql主从复制、读写分离工作原理+配置

Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysqlinstance(我们称之 Slave).在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端. MySQL 复制的基本过程如下: 1. Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开

Form界面的各组件的工作原理---中介者模式

在VS项目开发过程中,我们创建一个页面后,系统为我们自动生成一些代码(.aspx,.cs),一个用于前台控件的摆放.另一个用于编写控件对应的事件操作.例如:我们在双击按钮后,系统自动生成一段Click的代码并在里面填写我们想要的操作.为什么界面上很多的按钮他们相互之间的操作都互不受影响?因为控件在操作的时候,不是自己操作自己,而是产生事件并发送的Form界面:再由Form界面按照接收到的事件,转发到对应的操作中:这样Form就起到中介的作用:这就是中介模式的实际应用案例. 我们先看看定义:用一个

MySQL MHA工作原理

MHA工作组件 MHA(Master High Availability)是一种MySQL高可用解决方案,由日本DeNA公司开发,主要用于在故障切换和主从提升时进行快速切换,并最大程度保证数据一致性.MHA主要由两部分组成:1.MHA Manager(管理节点),管理节点部署在群集之外,主要用于定期监测群集中的主节点,并在主从切换时负责管理调度切换流程.2.MHA Node(数据节点),数据节点部署在每个群集节点上,负责在主从切换时对比和应用差异日志. 管理节点主要包含以下工具: masterh

MySQL数据库工作原理

接触一个新的事物的时候,是有必要从其工作原理入手,弄清楚这个东西的来龙去脉,为接下来的继续深入学习做好铺垫,掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路.接下来,还是从mysql的工作原理开始入手,下面先来一张经典的图: 上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的. 下面是关于上述部件的介绍: connectors 与其他编程语言中的sql 语句进行交互,如php.java等. Manageme

Mysql用户访问工作原理

掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路.接下来,还是从mysql的工作原理开始入手,下面先来一张经典的图: 上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的. 下面是关于上述部件的介绍: connectors 与其他编程语言中的sql 语句进行交互,如php.java等. Management Serveices & Utilities 系统管理和控制工具 Connection Pool (连接

Mysql 工作原理

刚开始接触一个新的事物的时候,我觉得很有必要从其工作原理入手,弄清楚这个东西的来龙去脉,为接下来的继续深入学习做好铺垫,掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路.接下来,还是从mysql的工作原理开始入手,下面先来一张经典的图: 上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的. -+---------------------------------------------------------

MySQL语法执行工作原理

目录 [TOC] 一.MySQL语法执行工作原理 客户端请求由Nginx等负载均衡服务器转交给Tomcat,Tomcat从MySQL中捞取数据,如果请求的数据在MySQL缓存中,那么MySQL会将缓存中捞取到的数据返回给客户端,如果缓存中没有请求的数据,那么MySQL会通过解析器解析SQL语法是否有问题(用户权限问题),在SQL语法没有问题的情况下,将SQL转交给优化器,看SQL是否通过索引等来进行查询,再通过存储引擎在磁盘中捞取数据. 详细流程如下,对于IE-->TOMCAT-->MySQL

MySQL查询优化器工作原理解析

手册上查询优化器概述 查询优化器的任务是发现执行SQL查询的最佳方案.大多数查询优化器,包括MySQL的查询优化器,总或多或少地在所有可能的查询评估方案中搜索最佳方案.对于联接查询,MySQL优化器所调查的可能的方案数随查询中所引用的表的数目呈指数增长.对于小数量的表(典型小于7-10),这不是一个问题.然而,当提交的查询更大时,查询优化所花的时间会很容易地成为服务器性能的主要瓶颈. 查询优化的一个更加灵活的方法是允许用户控制优化器详尽地搜索最佳查询评估方案.一般思想是优化器调查的方案越少,它编

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX