深入学习MySQL 01 一条查询语句的执行过程
本篇文章给大家分享《深入学习MySQL 01 一条查询语句的执行过程》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。
在学习SpringCloud的同时,也在深入学习MySq中,听着
在学习一个东西之前,了解它的历史都是很有必要的,那么首先,我们先来了解MySQL的历史。
MySQL的前世今生
1.1990年,有一个小伙子被客户要求提供通用的SQL支持,当时他首先借助了mSQL的代码进行集成,但效果不太满意,便自己重写了一个SQL支持。
2.1995年,1.0版的MySQL发布,内部引擎为ISAM。
3.1999年,MySQL AB公司成立,并开发出Berkeley DB引擎,BDB引擎支持事务,这是MySql第一个支持事务的引擎。
4.2000年,MySQL开源,重新整理存储引擎ISAM,重命名MyISAM。
5.2001年,集成了存储引擎InnoDB,这个引擎不仅能持事务处理,并且支持行级锁。后来该引擎被证明是最为成功的MySQL事务存储引擎。
6.2006年,Oracle把InnoDB引擎的开发公司innobase收购完成。MySQL明确地表现出迈向高性能数据库的发展步伐。
7.2008年,Sun公司以10亿收购了MySQL AB。
8.螳螂捕蝉,黄雀在后。2009年,数据库老大Oracle大笔一挥,74亿美将Sun和MySQL通盘收于旗下,从此MySQL数据库进入Oracle时代。
9.2010年,MySQL 5.5正式版发布,Oracle完成了大量改进,并将innodb改成默认引擎。
10.由于MySQL的开源性被广泛传播,也被更多的人了解。伴随着更多的技术开发人员加入到MySQL开发中,从此它被不断完善,一步一步迈向人生巅峰。
11.历史只需要了解,不需要背诵哈~
MySQL逻辑架构

大体上,MySQL分为Server层和存储引擎层。
Server层包括连接器、查询缓存、分析器、优化器、执行器等。这一层提供了一些核心公用服务,包括了内置函数、视图、触发器等功能。
存储引擎层主要是提供数据存储与提取服务,它是插件式的,支持MyISAM、InnoDB、Memory等。MySQL5.5起,默认使用InnoDB
查询语句的执行过程
sql语句:select * from T where ID = 1
1.连接器
首先需要经过连接器,建立与MySQL的连接,在这里会做身份认证(验证账号密码)、权限读取(获取你的相关权限,用于做权限的逻辑判断),而且这会有个线程池用于管理线程
2.查询缓存
验证身份通过后,会在查询缓存中查询找有没有缓存,命中的话就直接返回结果,否则进入分析器。查询缓存是以键值对的形式保存缓存的,key存储sql语句,value存储查询结果。
ps:建议关闭查询缓存。因为当表的更新时,相应表的查询缓存会被全部清空,这会导致缓存的命中率很低,维护查询缓存也会消耗一定的性能
3.分析器
首先进行"词法分析",从你输入的SQL中识别出"select"则认为这是查询语句,还会识别出"T"为表名,"ID"为列名等等
然后进行"语法分析",判断整个sql语句是否错误,并判断是否存在"T"表,是否存在列"ID"
4.优化器
在这会对SQL语句进行优化,比如索引的选取,多表关联(join)时连接表的顺序等,然后选取最优的方案生成执行计划
ps:优化器有时也会有出错,比如选错索引
5.执行器
首先判断该用户有无对该表查询的权限,无则直接返回,有则根据执行计划执行SQL语句。
执行完成后,将结果缓存到查询缓存中,并返回结果给客户端。
至此,一条查询语句执行完了
参考 《MySQL45讲》
《高性能MySQL》
https://www.cnblogs.com/eyesf...
如果觉得不错,分享给你的朋友!


THANDKS
- End -
一个立志成大腿而每天努力奋斗的年轻人
伴学习伴成长,成长之路你并不孤单!

文中关于mysql的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《深入学习MySQL 01 一条查询语句的执行过程》文章吧,也可关注golang学习网公众号了解相关技术文章。

- 上一篇
- 使用idea创建SpringBoot项目

- 下一篇
- 如何给列表降维?sum()函数的妙用
-
- 会撒娇的百合
- 这篇文章内容真是及时雨啊,太全面了,很棒,已收藏,关注楼主了!希望楼主能多写数据库相关的文章。
- 2023-01-29 02:28:52
-
- 坚定的保温杯
- 这篇文章内容太及时了,好细啊,很棒,mark,关注作者了!希望作者能多写数据库相关的文章。
- 2023-01-24 07:36:52
-
- 爱听歌的大神
- 很好,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢作者大大分享技术贴!
- 2023-01-24 03:14:02
-
- 复杂的柚子
- 好细啊,已收藏,感谢老哥的这篇文章内容,我会继续支持!
- 2023-01-23 19:02:51
-
- 含糊的日记本
- 这篇技术文章太及时了,作者大大加油!
- 2023-01-22 18:55:18
-
- 数据库 · MySQL | 2小时前 | Python 自动化 环境变量 mysql--version sudosystemctlstatusmysql
- 验证MySQL安装的三种快速方法
- 403浏览 收藏
-
- 数据库 · MySQL | 4小时前 |
- MySQL必备20个基础操作指令大全
- 166浏览 收藏
-
- 数据库 · MySQL | 5小时前 |
- MySQL基础教程:案例解析掌握基本操作
- 143浏览 收藏
-
- 数据库 · MySQL | 5小时前 | 备份数据 DROPTABLE TRUNCATETABLE IFEXISTS 外键检查
- MySQLdroptable命令详解与表结构删除技巧
- 463浏览 收藏
-
- 数据库 · MySQL | 5小时前 |
- MySQL新手必备命令大全及操作攻略
- 110浏览 收藏
-
- 数据库 · MySQL | 5小时前 |
- MySQL中as关键字别名功能深度解析
- 483浏览 收藏
-
- 数据库 · MySQL | 6小时前 |
- mysql基础20条指令及使用详解
- 273浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- PPTFake答辩PPT生成器
- PPTFake答辩PPT生成器,专为答辩准备设计,极致高效生成PPT与自述稿。智能解析内容,提供多样模板,数据可视化,贴心配套服务,灵活自主编辑,降低制作门槛,适用于各类答辩场景。
- 10次使用
-
- Lovart
- SEO摘要探索Lovart AI,这款专注于设计领域的AI智能体,通过多模态模型集成和智能任务拆解,实现全链路设计自动化。无论是品牌全案设计、广告与视频制作,还是文创内容创作,Lovart AI都能满足您的需求,提升设计效率,降低成本。
- 9次使用
-
- 美图AI抠图
- 美图AI抠图,依托CVPR 2024竞赛亚军技术,提供顶尖的图像处理解决方案。适用于证件照、商品、毛发等多场景,支持批量处理,3秒出图,零PS基础也能轻松操作,满足个人与商业需求。
- 26次使用
-
- PetGPT
- SEO摘要PetGPT 是一款基于 Python 和 PyQt 开发的智能桌面宠物程序,集成了 OpenAI 的 GPT 模型,提供上下文感知对话和主动聊天功能。用户可高度自定义宠物的外观和行为,支持插件热更新和二次开发。适用于需要陪伴和效率辅助的办公族、学生及 AI 技术爱好者。
- 25次使用
-
- 可图AI图片生成
- 探索快手旗下可灵AI2.0发布的可图AI2.0图像生成大模型,体验从文本生成图像、图像编辑到风格转绘的全链路创作。了解其技术突破、功能创新及在广告、影视、非遗等领域的应用,领先于Midjourney、DALL-E等竞品。
- 52次使用
-
- golang MySQL实现对数据库表存储获取操作示例
- 2022-12-22 499浏览
-
- 搞一个自娱自乐的博客(二) 架构搭建
- 2023-02-16 244浏览
-
- B-Tree、B+Tree以及B-link Tree
- 2023-01-19 235浏览
-
- mysql面试题
- 2023-01-17 157浏览
-
- MySQL数据表简单查询
- 2023-01-10 101浏览