MySQL学习6–MySQL5.1的体系架构

MySql体系架构:

Mysql各个模块执行的过程:
  1. 初始化模块:当服务器启动的时候,初始化模块就会解析控制文件和命令行参数,分配全局的缓存,初始化全局变量和结构,加载访问控制表和执行其它的初始化任务.一旦初始化工作完成,初始化模块转交控制权给连接管理器,它是以一个循环的方式接收客户端的连接;
  2. 连接管理模块:当客户端连接到数据库服务器,连接管理模块执行一些底层的网络命令并把控制权交给线程管理模块;
    1. max_connections:定义服务器最大的连接数;(show variables like ‘%connect%’)
    2. max_user_connections:定义服务器针对单个用户最大的连接数;
    3. Aborted_connects:失败的连接数;(show global status like ‘%connect%’);
    4. Connections:连接的次数;
    5. Max_userd_connections:最大使用连接数,最大的并发量;
    6. Threads_connected:当前连接了多少个进程,与show processlist的结果相同;
  3. 线程管理模块:线程管理模块会提供一个线程,可能是新建的,可能是从线程池中获得的,一旦线程建立好,就会把控制权交给用户验证模块;
  4. 用户验证模块:会验证连接的用户名,密码和客户端IP,验证通过之后就会接收客户端发送的命令,然后交给命令分发模块;
  5. 命令分发模块:
  6. 日志模块:每一个查询都会记录通用查询日志;
  7. 查询缓存模块:命令分发器把查询发送给查询缓存模块,查询缓存模块查看这个查询是否是可以缓存的类型,并且查找之前是否缓存过,如果查询命中,就会把纯纯的结果返回给用户,连接管理模块就会接到控制权并处理下一个命令;如果查询缓存模块没有命中,则查询给解析器,它决定了根据查询如何转交控制权;
  8. 命令解析器:命令解析器选择那种方式;
  9. 查询优化器:查询语句会使用查询优化器;
  10. 表变更模块:插入,删除,创建表,架构修改会使用条变成模块;
  11. 表维护模块:检查,修复,更新键统计会使用表维护模块;
  12. 复制模块:和复制相关的查询会使用复制模块;
  13. 状态模块:状态报告会使用状态报告模块;
  14. 访问控制模块:在这一步,通过检查命令解析器模块涉及到的表或者列是否有权限,验证之后把控制权交给表管理模块;
  15. 表管理模块:会执行表的打开和锁定,并调用具体的存储引擎接口;
  16. 存储引擎接口:存储引擎接口实行行级别的操作;
  17. 核心API:内存管理,数字函数,字符函数;
  18. 网络交互模块:网络监听,协议处理;

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注