day2 -- MySQL内部模块

16 篇文章 0 订阅

学习目标

我希望了解一下Mysql的工作原理,实现这个工作原理的各个模块是如何协同工作的。


学习内容

  • 服务端与客户端
  • 服务端与客户端如何通信
  • 存储引擎
  • 存储结构

具体细节

  • 这里先放上Mysql可视化结构,来自B站
    在这里插入图片描述

  • 服务端
    服务端也就是我们常说的Mysql,关系型资料库管理系统。Mysql在后台帮我们组织和管理数据,向我们提供服务。

  • 客户端
    客户端也就是“程序员”用于管理、可视化、开发服务端的工具,像Mysql workbench。
    在这里插入图片描述

  • 如何与服务端通信的
    客户端连接驱动诸如 ODBC JODBC连接驱动可以和Mysql的连接模块进行连接和通讯。
    连接模块后来演变成了连接池,因为连接池是对外连接的唯一模块,参数配置很重要。

    连接驱动和连接池建立连接后,SQl语句从客户端发往服务端, ==> 然后被SQL接口和SQL解析器接受和解析, ==>命令成功解析后再被转送给SQL语句优化器,优化器优化任务语句, ⇒ 优化后的SQL语句会被送给存储引擎比如InnoDB执行增删改查动作。

  • 存储引擎
    在这里插入图片描述
    写入: 第一步:存储引擎调用执行器将旧值写道 磁盘的 undo log区用于支持回滚
    第二步:将内存中的数值插入buffer pool
    第三步:数值通过IO线程写入磁盘
    其实这个步骤很复杂,远远不止上面写步骤,仅作为了解到此为止。

    查询:第一步客户端发送SQL指令
    第二步:指令通过连接池发送给SQL接口,被SQL解析器解析
    第三步:解析器把解析结果丢给预处理器+优化器
    第四步:最终的SQL语句被执行器接受
    第五步:执行器调用存储引擎拿数据
    第六步:拿到数据的执行器将数据通过连接池返回给客户端
    在这里插入图片描述

  • 存储结构
    建立新表是指定的存储引擎不同可能存在着存储结构的不一样。
    大致思路可以参考文件系统的管理方式。
    一般就是建表会生成一个独立表空间,可以想象为一块独立的磁盘,这个磁盘的基本构成单元称为页,大小16KB,多个页组成区,多个区组成 组,然后多个组形成表空间。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值