目录
- 一、MySQL 体系架构
- - 连接池组件
- - 缓存组件
- - 分析器
- - 优化器
- - 执行器
- 二、写操作执行过程
- 三、读操作执行过程
- 四、SQL执行顺序
一、MySQL 体系架构

- 连接池组件
- 1、负责与客户端的通信,是半双工模式,这就意味着某一固定时刻只能由客户端向服务器请求或者服务器向客户端发送数据,而不能同时进行。
- 2、验证用户名和密码是否正确(数据库 MySQL 的 user 表中进行验证),如果错误返回错误通知
Access denied for user 'root'@'localhost'(using password:YES);如果正确,则会去 MySQL 的权限表查询当前用户的权限。
- 缓存组件
也称为查询缓存,存储的数据是以键值对的形式进行存储,如果开启了缓存,那么在一条查询 SQL 语句进来时会先判断缓存中是否包含当前的 SQL 语句键值对,如果存在直接将其对应的结果返回,如果不存在再执行后面一系列操作。如果没有开启则直接跳过。
show variables like 'have_query_cache'; # 查看缓存配置:
show variables like 'query_cache_type'; # 查看是否开启
show variables like 'query_cache_size'; # 查看缓存占用大小
show status like 'Qcache%'; # 查看缓存状态信息
缓存失效场景:
- 查询语句不一致。前后两条查询 SQL 必须完全一致;
- 查询语句中含有一些不确定的值时,则不会缓存。比如 now()、current_date()、curdate()、curtime()、rand()、uuid() 等;
- 不使用任何表查询。如 select 'A';
- 查询 mysql、information_schema 或 performance_schema 数据库中的表时,不会走查询缓存;
- 在存储的函数,触发器或事件的主体内执行的查询;
- 如果表更改,则使用该表的所有高速缓存查询都变为无效并从缓存中删除,这包括使用 MERGE 映射到已更改表的表的查询。一个表可以被许多类型的语句改变,如 insert、update、delete、truncate table、alter table、drop table、drop database。
通过上面的失效场景可以看出缓存是很容易失效的,所以如果不是查询次数远大于修改次数的话,使用缓存不仅不能提升查询效率还会拉低效率(每次读取后需要向缓存中保存一份,而缓存又容易被清除)。所以在 MySQL5.6 默认是关闭缓存的,并且在 8.0 直接被移除了。当然,如果场景需要用到,还是可以使用的。
开启:
在配置文件(linux 下是安装目录的 cnf 文件,windows 是安装目录下的 ini 文件)中,增加配置: query_cache_type = 1
# 指定 SQL_NO_CACHE,SQL_CACHE 同理。
SELECT SQL_NO_CACHE * FROM student WHERE age > 20;
- 分析器
对客户端传来的 SQL 进行分析,这将包括预处理与解析过程,并进行关键词的提取、解析,并组成一个解析树。具体的解析词包括但不局限于 select/update/delete/or/in/where/group by/having/count/limit 等,如果分析到语法错误,会直接抛给
客户端异常:ERROR:You have an error in your SQL syntax.。
select * from user where userId = 1234;
在分析器中就通过语义规则器将 select from where 这些关键词提取和匹配出来,MySQL 会自动判断关键词和非关键词,将用户的匹配字段和自定义语句识别出来。这个阶段也会做一些校验:比如校验当前数据库是否存在 user 表,同时假如 user 表中不存在 userId 这个字段同样会报错:unknown column in field list.。
- 优化器
进入优化器说明 SQL 语句是符合标准语义规则并且可以执行。优化器会根据执行计划选择最优的选择,匹配合适的索引,选择最佳的方案。比如一个典型的例子是这样的:
表 T,对 A、B、C 列建立联合索引 —— (A,B,C),在进行查询的时候,当 SQL 查询条件是:select xx where B=x and A=x and C=x。很多人会以为是用不到索引的,但其实会用到,虽然索引必须符合最左原则才能使用,但是本质上,优化器会自动将这条 SQL 优化为:where A=x and B=x and C=x,这种优化会为了底层能够匹配到索引,同时在这个阶段是自动按照执行计划进行预处理,MySQL 会计算各个执行方法的最佳时间,最终确定一条执行的 SQL 交给最后的执行器。
优化器会根据扫描行数、是否使用临时表、是否排序等来判断是否使用某个索引,其中扫描行数的计算可以通过统计信息来估算得出,而统计信息可以看作是索引唯一数的数量,可以使用部分采样来估算,具体就是选择 N 个数据页,统计这些页上数据的不同值,得到一个平均值,然后乘以这个索引的页面数,就得到了。但是因为索引数据会变化,所以索引的统计信息也会变化。当变更的数据行数超过 1/M 的时候,就会重新计算一次统计信息。
关于统计信息可以选择是否持久化::通过 innodb_stats_persistent,设置为 on 的时候,表示统计信息会持久化存储。这时,默认的 N 是 20,M 是 10。设置为 off 的时候,表示统计信息只存储在内存中。这时,默认的 N 是 8,M 是 16。
没有使用最优索引如何优化::
- 1、虽然会自动更新统计信息,但是但是不能保证统计信息是最新值,这就可能导致优化器选择了不同的索引导致执行变慢,所以可以通过 analyze table 表名 来重新计算索引的统计信息;
- 2、在表名后面添加 force index(索引名) 语句来强制使用索引(不建议);
- 3、将 SQL 进行修改成优化器可以选最优索引的实现方式;
- 4、新建一个最优索引或者删除优化器误用的索引;
- 执行器
执行器会调用对应的存储引擎执行 SQL,主流的是 MyISAM 和 Innodb。
二、写操作执行过程
三、读操作执行过程
在 MySQL 5.6 之后引入了 索引下推(Index Condition Pushdown),所以在查询操作上会有一个 Index Filter 和 Table Filter 的过程,查询的流程图大致可以用下面这张图来概括:
四、SQL执行顺序
相关推荐:
SEO外链技巧:提升网站排名的秘密武器,ai视频生日祝福
为什么要seo 运营,为什么需要seo ,ai人物头盔
SEO表格:优化网站排名的秘密武器,大数据推广营销费用多少
SEO流程全解析:如何提升网站流量与排名,账号如何营销推广
文章续写AI:提升写作效率,创意无限
如何用AI写公众号文章?让创作更高效、更轻松
什么是seo网络推广,seo网络推广技术 ,ai写真官方
SEO开发:数字营销的核心驱动力,园区网站建设
AI缩写在线:让人工智能助力你行业前沿技术,ai uhrehara
ChatGPT发生故障,背后隐藏着哪些不为人知的原因与挑战?,硬件ai和软件ai
2025年整站SEO排名优化策略:让你的网站脱颖而出,id排版ai
SEO优化:提升网站流量的终极指南,揭阳网站快速推广
SEO要不,来看看如何通过SEO优化提高网站流量和曝光度,seo 获客技巧
seo营销到底是什么,seo算什么营销 ,ai里面新建
ChatGPT为什么打不开?背后原因与解决方案,慧ai写作
SEO快速优化文章排名:提升网站流量的必备技巧,ai小苹果会员分享
SEO查:如何用精准的SEO诊断助力网站流量爆发,美团关键词排名怎么补
seo竞价做的什么工作,seo 竞价 ,office智能ai
ChatGPT为什么访问不了?全面解析及解决方案,ai首页设计
360AI写作怎样?助力创作的新风尚,ai到访
OpenAIGPTChatSoraOpenAIChatGPT服务在中断数小时后已恢复,ai视图线稿
主题导航-引领互联网世界的智慧之路,大渡口网站建设方案
SEO在广告领域的深度解析:如何利用SEO提升广告效果,网文写作ai工具
用AI修改文章,提升写作效率与质量的新时代
创作新时代:自动生成文章AI的魅力与未来
什么是seo网站推广,什么是seo网站推广 ,ai酷男人
seo经验是什么,seo进阶 ,ai矿机
SEO非常:如何利用SEO提升网站排名与流量,助力品牌快速成长,绥化短视频营销推广
seo要学会什么,seo要学多长时间 ,NTU AI 录取
什么是“神马关键词”?如何用它提升你的网络营销效果?,新闻发布网站怎么做推广
文章创作AI:引领智能写作的新时代
SEO字:如何通过精准关键词提升网站流量与排名,赣州于都网站推广
SEO职责:为网站注入流量,提升品牌竞争力,拼多多女装关键词排名
从语言助手到智能生活伙伴,未来的智能助手如何改变我们的生活,网站建设分站公司
互联网快排:助力企业网站流量爆发的秘密武器,西安网站建设找资源公司
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
ChatGPT昨晚突然不能使用,背后真相令人意想不到!,edga ai
SEO攻略:搜索引擎优化,快速提升网站排名,网站推广网站优化费用
ChatGPT:基于Transformer技术的语言模型,开创人工智能未来,AI独战OK
SEO优化的话题:助力企业成功的关键,夏杰ai智能管家
AI一键生成文章网页版,让内容创作更简单高效
SEO优化如何进行:提升网站排名,轻松超越竞争对手,ai写作怎么操作手机
SEO优化大全:让你的网站排名轻松破局,精准引流更高效!,274357524ai
OpenAI智能诊断医疗-开启精准医疗新纪元,跟侯维静学ai
SEO学堂:开启数字营销新时代,全面提升网站排名与流量,文山ai营销推广方案
如何识别文章是否由AI撰写?揭开智能写作的秘密
文章AI生成软件高效创作新纪元
seo要懂些什么,seo主要做什么的 ,小艾艾AI
SEO站外优化策略:提升网站排名的关键因素,遵义公司网站推广
SEO查:如何通过精准优化让网站流量飞速增长,吉林推广营销怎么样