mysql 执行流程

我们可以人为的把mysql 的主要功能分为如下模块.

1.初始化模块

  mysql启动的时候执行初始化工作,如读取配置文件,分配一些全局变量(sql_model,catch buffer),载入控制表, 内存分配之类的,这个模块执行完之后, 初始化模块执行完之后就把控制器交给

链接管理器

2.执行流程

一个用户连接进来之后 先会跟连接管理模块打交道, 然后连接管理模块会通知线程管理模块分配一条线程进入 用户模块 对这个用户进行验证, 当 用户模块 执行完之后,服务端就可以接受从客户端发来的命令了, 用户发来的命令会传给 命令分发器 ,

  在命令分发器中, 加入是查询语句的话他会先到 查询缓存模块 看看有没有被缓存过得(当然前提是我们把这个查询缓存给打开), 命令分发器 他还会通知日志模块将我们的命令给保存下来,放到 general_log 里面,而且还是没等命令执行完就开始记录,完完整整得到记录下来,

  下面呢,命令分发器 会将命令传给 命令解析器, 通过 命令解析器 的解析将命令发往不同的 模块 如 查询优化器(DML), 表变更模块(DDL), 表维护模块(检查,压缩) ,复制模块,状态模块(状态变量,服务器信息)

  然后他们会根据自己的需要 调用 访问控制模块 访问控制模块会传来一个 表的列表 ,它会检测用户有没有权限对表或列的权限 他执行完之后 会把控制器交给 表管理模块 表管理模块会根据.frm 文件进行一些读取,或者取锁 ,当它执行完之后会调用 存储引擎接口 来实现.

mysql 执行流程的更多相关文章

  1. mysql执行流程

      https://www.jianshu.com/p/71a98f1347b9 image   image SQL示例: SELECT DISTINCT < select_list > ...

  2. 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序

    前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来 ...

  3. MySQL之执行流程

    最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新 ...

  4. Mysql漂流系列(一):MySQL的执行流程

    MySQL的执行流程 MySQL的执行流程: MySQL的执行流程分析: 1.当我们请求mysql服务器的时候,MySQL前端会有一个监听,请求到了之后,服务器得到相关的SQL语句,执行之前(虚线部分 ...

  5. MySQL架构总览->查询执行流程->SQL解析顺序

    Reference:  https://www.cnblogs.com/annsshadow/p/5037667.html 前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后 ...

  6. 步步深入MySQL:架构->查询执行流程->SQL解析顺序!

    一.前言 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序 ...

  7. MySQL基础架构之查询语句执行流程

    这篇笔记主要记录mysql的基础架构,一条查询语句是如何执行的. 比如,在我们从student表中查询一个id=2的信息 select * from student where id=2; 在解释这条 ...

  8. 20181012关于mysql内部执行流程

    转自:https://www.cnblogs.com/annsshadow/p/5037667.html 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序   前言: 一直是 ...

  9. MySQL架构与SQL执行流程

    MySQL架构设计 下面是一张MySQL的架构图: 上方各个组件的含义如下: Connectors 指的是不同语言中与SQL的交互 Management Serveices & Utiliti ...

随机推荐

  1. 调用支付宝PHP接口API实现在线即时支付功能(UTF-8编码)

    这次在项目中要实现订单功能,所以要完成在线支付,在线支付一般有网银支付和第三方支付(支付宝.paypal等)这两种途径,未简单起见,先完成支付宝在线支付功能,由于项目基于Yii框架,且使用UTF-8编 ...

  2. C# lock用法

    当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源 ...

  3. Swiper API

    本文分享自 http://www.cnblogs.com/scavengers/p/3760449.html 最近使用Swipe.js,发现中文的资料很少,试着翻译了一下.能力有限,翻译难免错漏,欢迎 ...

  4. 20141201--测试 jQuery

    测试 JavaScript 框架库 - jQuery jQuery 是一个 JavaScript 库. 引用 jQuery <!DOCTYPE html> <html> < ...

  5. [javascript|基本概念|Unll]学习笔记

    Uull类型的值:null(只有一个)|空对象指针|typeof操作符返回object 作用:一般用于对即将保存对象但不知具体对象的引用 特殊:null == undefined --> tru ...

  6. JS运动学习笔记 -- 任意值的运动框架(高/宽度,背景颜色,文本内容,透明度等)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. SpringMvc入门三----控制器

    在传统的Spring MVC开发方法中,必须在Bean配置文件中为每个控制器类配置实例和请求映射和让每个控制器类去实现或者扩展特定于框架的接口或者基类,不够灵活. 如果Spring MVC可以自动侦测 ...

  8. 南阳理工oj88--汉诺塔(一)

    题目链接.http://acm.nyist.net/JudgeOnline/problem.php?pid=88 #include <stdio.h> /* //测试一下49999和500 ...

  9. Aborting a running program

    In the event that a calculation appears to be running excessively long, one can abort thecalculation ...

  10. bzoj2395[Balkan 2011]Timeismoney最小乘积生成树

    所谓最小乘积生成树,即对于一个无向连通图的每一条边均有两个权值xi,yi,在图中找一颗生成树,使得Σxi*Σyi取最小值. 直接处理问题较为棘手,但每条边的权值可以描述为一个二元组(xi,yi),这也 ...