设为首页 收藏本站
查看: 715|回复: 0

[经验分享] mysql原理

[复制链接]

尚未签到

发表于 2018-10-10 06:23:11 | 显示全部楼层 |阅读模式
  一、MySQL简单介绍
  MySQL是当今最流行的开源数据库管理系统,超过10亿的下载量足可以证明这点。MySQL以其速度、高可靠性、简单易用,广泛应用,一些大型企业也在逐渐应用,如:Facebook、维基百科等网站。MySQL最早由瑞典的MySQL AB公司开发,后于2008年被Sun收购,2009年Oracle公司收购了Sun公司。它分为社区版和商业版,其体积小、速度快、总体成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
  二、MySQL的基本组成部分流程图:
DSC0000.png

  流程图详解:
  所有的用户连接请求都是先发往连接管理器的,连接管理器(是一个侦听器)用于侦听来自客户端的连接,并接受用户请求,用户请求被接收下来,而一个用户请求需要一个线程来响应,因此需要一个线程管理器。线程管理器负责给用户创建生成新的线程或完成线程重置的方式给用户一个响应线程,用户连接进来后需要检查用户权限(是否允许访问mysql服务器等等权限)。这时就需要用户模块出场了,用户模块负责管理用户是否能够连接的,这是管理权限的第一关,如果用户不能请求,那用户请求就终止了,因此用户模块还负责退回用户请求(主要作用是验证用户请求和用户身份的)。
  一旦用户具有连接的权限,那用户就可以发一些SQL语句,而每一个SQL语句需要进行分析,不同的语句需要分配给不同的解析器,因此就需要命令分发模块,就把这些不同类型的语句分配给与之对应的解析器上去。如果命令在分发之前是一个查询语句,而且我们的缓存中有内容,就可以直接返回给用户结果了,因此也有可能会跟缓存模块进行交互。当用户发起一个命令之后,例如我们的web,当用户请求资源后,都会记录在日志中的,因此命令分发模块也有可能会和日志模块进行交互的,日志模块的主要功能是记录用户查询的。缓存模块和日志模块并不是并行的,命令分发模块给两者都有可能有交互的。
  如果缓存中没有就要将用户请求的命令分发出去,将命令交给解析器(解析查询生成解析数),由解析器判断命令最终属于哪种语句,如果解析器解析此命令是select语句,需要交给优化器进行优化。如果是update、insert、delete语句,需要交给表定义模块(这一过程也要进行权限的判断)。mysql也有与repair相关的语句,那可想而知需要表维护模块了,表维护模块主要作用是修复表中的某些逻辑错误的。mysql中也有很多状态变量,而这些状态变量也需要状态报告模块来存储每一个执行过程中的状态信息。mysql也有复制的功能,把主mysql服务器上的数据同步到从mysql服务器上的过程,这就是复制模块的功能。
  无论哪个模块,用户最终要完成操作,必须要检查用户是否具有权限,上面所说的表定义模块、表维护模块都需要检查用户权限,因此最终这些命令语句都要交给访问控制模块来控制:用于检验客户端用户的操作是否具有足够的操作权限,来执行请求操作如果访问模块检查后发现没有任何问题,会把这些命令语句交给另一个组件表管理器,由表管理器完整真正意义上的操作,表管理器负责创建、读取或修改表定义文件的。表管理器交给存储引擎(存储引擎的接口),存储引擎交给最核心的-->MYISAMINnoDB
  
  转自:http://jilili.blog.51cto.com


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-619662-1-1.html 上篇帖子: 九爷 带你玩转mysql引擎Mylsam 下篇帖子: 赶集网mysql开发36军规
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表