一、MySQL简单介绍
    MySQL是当今最流行的开源数据库管理系统,超过10亿的下载量足可以证明这点。MySQL以其速度、高可靠性、简单易用,广泛应用,一些大型企业也在逐渐应用,如:Facebook、维基百科等网站。MySQL最早由瑞典的MySQL AB公司开发,后于2008年被Sun收购,2009年Oracle公司收购了Sun公司。它分为社区版和商业版,其体积小、速度快、总体成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
二、MySQL的基本组成部分流程图:
流程图详解:
 
    所有的用户连接请求都是先发往连接管理器的,连接管理器(是一个侦听器)用于侦听来自客户端的连接,并接受用户请求,用户请求被接收下来,而一个用户请求需要一个线程来响应,因此需要一个线程管理器。线程管理器负责给用户创建生成新的线程或完成线程重置的方式给用户一个响应线程,用户连接进来后需要检查用户权限(是否允许访问mysql服务器等等权限)。这时就需要用户模块出场了,用户模块负责管理用户是否能够连接的,这是管理权限的第一关,如果用户不能请求,那用户请求就终止了,因此用户模块还负责退回用户请求(主要作用是验证用户请求和用户身份的)。
    一旦用户具有连接的权限,那用户就可以发一些SQL语句,而每一个SQL语句需要进行分析,不同的语句需要分配给不同的解析器,因此就需要命令分发模块,就把这些不同类型的语句分配给与之对应的解析器上去。如果命令在分发之前是一个查询语句,而且我们的缓存中有内容,就可以直接返回给用户结果了,因此也有可能会跟缓存模块进行交互。当用户发起一个命令之后,例如我们的web,当用户请求资源后,都会记录在日志中的,因此命令分发模块也有可能会和日志模块进行交互的,日志模块的主要功能是记录用户查询的。缓存模块和日志模块并不是并行的,命令分发模块给两者都有可能有交互的。
    如果缓存中没有就要将用户请求的命令分发出去,将命令交给解析器(解析查询生成解析数),由解析器判断命令最终属于哪种语句,如果解析器解析此命令是select语句,需要交给优化器进行优化。如果是update、insert、delete语句,需要交给表定义模块(这一过程也要进行权限的判断)。mysql也有与repair相关的语句,那可想而知需要表维护模块了,表维护模块主要作用是修复表中的某些逻辑错误的。mysql中也有很多状态变量,而这些状态变量也需要状态报告模块来存储每一个执行过程中的状态信息。mysql也有复制的功能,把主mysql服务器上的数据同步到从mysql服务器上的过程,这就是复制模块的功能。
    无论哪个模块,用户最终要完成操作,必须要检查用户是否具有权限,上面所说的表定义模块、表维护模块都需要检查用户权限,因此最终这些命令语句都要交给访问控制模块来控制:用于检验客户端用户的操作是否具有足够的操作权限,来执行请求操作如果访问模块检查后发现没有任何问题,会把这些命令语句交给另一个组件表管理器,由表管理器完整真正意义上的操作,表管理器负责创建、读取或修改表定义文件的。表管理器交给存储引擎(存储引擎的接口),存储引擎交给最核心的-->MYISAMINnoDB

本文出自 “丽的博客” 博客,请务必保留此出处http://jilili.blog.51cto.com/6617089/1188011

原来MySQl就是这样工作的!的更多相关文章

  1. 读书笔记——《MySQL DBA 工作笔记》

    关于前言 作者在前言中提出的一些观点很具有参考价值, 梳理完整的知识体系 这是每一个技术流都应该追逐的,完整的知识体系能够使我们对知识的掌握更加全面,而不仅仅局限于点 建立技术连接的思维,面对需求,永 ...

  2. MySQL:索引工作原理

    索引查找:通过索引键找到索引的叶子节点,再通过叶子节点的标记快速找到表中对应的行数据,再返回指定的列 索引找查是通过索引键定先位到一块局部区域,再开始扫描匹配的数据的. 为什么需要索引(Why is ...

  3. 【mysql】工作中mysql常用命令及语句

    1.查看mysql版本号 MySQL [release_test_oa]> select version(); +------------+ | version() | +----------- ...

  4. MySQL之mysql客户端工作的批处理一些使用手法

    通常我们会用mysql这个客户端程序来连接mysql库.这个通常是工作在交互式模式下的.如我们连接上mysql并执行如下操作: mysql -uroot -h127. -P3306 Welcome t ...

  5. mysql索引工作原理、分类

    一.概述 在mysql中,索引(index)又叫键(key),它是存储引擎用于快速找到所需记录的一种数据结构.在越来越大的表中,索引是对查询性能优化最有效的手段,索引对性能影响非常关键.另外,mysq ...

  6. MySQL MHA工作原理

    MHA工作组件 MHA(Master High Availability)是一种MySQL高可用解决方案,由日本DeNA公司开发,主要用于在故障切换和主从提升时进行快速切换,并最大程度保证数据一致性. ...

  7. MySQL索引工作原理

    为什么需要索引(Why is it needed)?当数据保存在磁盘类存储介质上时,它是作为数据块存放.这些数据块是被当作一个整体来访问的,这样可以保证操作的原子性.硬盘数据块存储结构类似于链表,都包 ...

  8. MySQL DBA工作角色和职责介绍

    MySQL DBA分架构DBA,运维DBA和开发DBA三种角色,职责介绍如下:

  9. Mysql 复制工作原理

    数据库配置的时候,一定要开启二进制日志,如果开始没开启后来再想开启的话,必须重启. 基于日志点的复制 备份数据库工具 ----------------------------------------- ...

随机推荐

  1. C# 结构转化

    一.string 转 char[] string ss = "alsofly"; char[] cc = ss.ToCharArray(); 二.char[] 转 string c ...

  2. ArcGIS Server 增加缓存路径

    Server缓存服务,由于缓存文件经常比较大,默认放在C盘下容易导致磁盘空间不够,因此Server提供了增加缓存路径的方法来解决该问题. 增加的路径有两种,一种是Server所在服务器增加一个和原缓存 ...

  3. windows下的socket网络编程(入门级)

    windows下的socket网络编程 clinet.c 客户端 server.c 服务器端 UDP通信的实现 代码如下 已经很久没有在windows下编程了,这次因为需要做一个跨平台的网络程序,就先 ...

  4. js获取元素的innerText属性为什么为空

    看这样一段内容: <div id="ii" style="visibility:hidden"> <a style="cursor: ...

  5. ssm框架web.xml中filter配置问题

    <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...

  6. CentOS6.5安装配置SVN

    安装SVN软件包[root@localhost ~]# yum install subversion#确认是否已安装svn模块[root@localhost ~]# cd /etc/httpd/mod ...

  7. 修改easyui中datagrid表头和数据不能分开对齐的BUG。

    easyui的datagrid中表头和列只能同时全部向左对齐,全部向右对齐或者居中对齐. 有时候有需求,数据向左或向右,表头居中对齐. 在不修改源码的情况下.下面的代码可以实现该功能. 把下面代码放在 ...

  8. Spring MVC Integration,Spring Security

     http://docs.spring.io/spring-security/site/docs/4.2.0.RELEASE/reference/htmlsingle/#authorize-reque ...

  9. css3渐变色彩

    CSS3 Gradient 分为线性渐变(linear)和径向渐变(radial).由于不同的渲染引擎实现渐变的语法不同,这里我们只针对线性渐变的 W3C 标准语法来分析其用法,其余大家可以查阅相关资 ...

  10. .Net分布式架构(二):基于Redis的Session共享

    一:Session简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台web服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台web服务器建立连 ...