一条sql的实行流程

打印 上一主题 下一主题

主题 715|帖子 715|积分 2145


文章地址
https://blog.csdn.net/qq_43618881/article/details/118657040

毗连器

请求先走到毗连器,与客户端创建毗连、获取权限、维持和管理毗连

mysql缓存池

假如要查找的数据直接在mysql缓存池里面就直接返回数据


分析器

请求已经创建了毗连,如今必要对请求的语法进行分析,生成一个语法树
假如语法不对在这里直接报错

优化器

在这里对你写的sql进行优化
好比说表毗连查询的时候小表 left join 大表
最后生成实行计划
也就是explain出来的结果

实行器

随后将实行计划交给实行引擎进行操作,好比innodb存储引擎,mysql的存储引擎支持插件化


实行引擎

INNODB存储引擎,会对实行计划进行处理

INNODB缓存池

在INNODB里面也有缓存池,里面会有各种各样的脏页





INNODB流程

select

首先检察数据是否在缓存池当中,假如是的话直接对数据进行返回
假如不在缓存池当中从磁盘读取root 的下面的非聚簇索引页,根据slot,进行二分查找,最后按照偏移量找到对应的页表,假如下一个节点还是非聚簇节点,就重复这个步骤,假如不是非聚簇节点,就查找真正的数据
slot槽

slot槽在页头中,每个页都是有的
slot 记录了每一个页的偏移量,是一个数组的结构,可以支持二分查找
先从 B+Tree 的根开始,逐层检索,直到找到叶子节点,也就是找到对应的数据页为止,然后将数据页加载到内存中,页目次中的槽(slot)采用二分查找的方式先找到一个粗略的记录分组,最后在分组中通过链表遍历的方式查找到记录。


insert



先记录undo日志
修改buffer pool中的数据
        使用double write buffer 两次写进行长期化
        写redo log 
                redo log 根据设置的频率进行刷盘
                记录binlog





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

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