zoukankan      html  css  js  c++  java
  • mysql 执行流程

    mysql 执行流程

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

    1.初始化模块

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

    链接管理器

    2.执行流程

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

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

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

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

  • 相关阅读:
    Scala中隐式转换(implicit conversion)的优先顺序
    protege4.0使用中的理论
    国外程序员整理的 C++ 资源大全
    什么是本体论?
    深入分析C++引用
    在基于对话框的MFC程序中,使程序在任务栏中不显示图标
    PhoneGap搭建运行环境(3.2版本)
    [JS代码]如何判断ipad或者iphone是否为横屏或者竖屏
    windwos iis 7.5 使用html 报405错误
    NodeJs 开源
  • 原文地址:https://www.cnblogs.com/mjorcen/p/4063372.html
Copyright © 2011-2022 走看看