服务化-mysql-01 mysql基础框架

一、mysql基础架构

mysql服务端可以分为两个部分,Server层和引擎层。
在这里插入图片描述

Server层包括连接器、查询缓存、分析器、优化器、执行器等。
存储引擎层负责数据的存储和提取。 架构模式是插件式的,支持InnoDB(5.5.5以后默认)、MyIsam、Memory等多个储存引擎。

二、server层详解

1、 mysql自带的客户端,可以通过Cmd 到命令行界面
2、 登录mysql连接器 mysql>Mysql –u u s e r – p {user} –p userp{password}
在这里插入图片描述
3、 数据库连接后可以查看数据库当前状态 mysql>show processlist (客户端长时间不连接,连接器自动断开。时间参数由wait_timeout控制,默认8h),连接的会话消息存储在连接器的内容中。由连接器对客户端进行校验,查阅USER表对用户host、user、pwd、具体权限进行校验。
在这里插入图片描述
查看连接信息。
在这里插入图片描述
4、 建立连接
4.1 长连接:连接成功后,客户端持续有请求,则一直使用同一连接。
4.2 短连接:每次执行完很少的几次查询就断开连接,下次查询再重建连接。
4.3 建立连接的过程通常十分复杂,故建议减少连接动作,多用长连接。
4.4 全部长连接,有时会导致mysql占内存过大,因为只有在连接断开时才会释放资源,所以会导致内存占用过大而oom,进而造成mysql异常重启。
4.5 全部长连接解决oom问题策略:i、定期断开长连接再重连(次选) ii、5.7以后版本,每次执行一个比较大的操作后,通过执行mysql_reset_connection来重新初始化链接。
5、查询缓存(弊大于利:每次对表单行数据更新,都会清空表缓存,对于更新频繁的数据库,缓存命中率很低),mysql8.0已废弃该功能,innoDB的缓存机制更优,而且还有LRU淘汰机制。
建连完成,就可执行select语句了。执行逻辑第二步:查询缓存。
6、分析器
对输入的字符串进行语法分析,识别操作语句、表、数据等有效信息。
在这里插入图片描述
经过分析器分析后,最终形成树状结构。
在这里插入图片描述
7、优化器
Mysql在明白你要做什么后,再对输入的语句进行优化。
7.1 当表内存在多个索引,优化器决定使用哪个索引;
7.2 一个语句有多表关联时,决定各表的链接顺序
8、执行器
执行的顺序:先检查用户对表有没有执行该操作的权限 —> 打开表找到表的引擎,使用引擎提供的接口。
8.1 没有索引时,查询操作会逐句执行逻辑判断操作,直至结束
8.2 对于有索引的表,执行的逻辑也差不多。第一次调用的是“取满足条件的第一行”这个接口,之后循环取“满足条件的下一行”这个接口,这些接口都是引擎中已经定义好的。
你会在数据库的慢查询日志中看到一个 rows_examined 的字段,表示这个语句执行过程中扫描了多少行。这个值就是在执行器每次调用引擎获取数据行的时候累加的。
在有些场景下,执行器调用一次,在引擎内部则扫描了多行,因此引擎扫描行数跟 rows_examined 并不是完全相同的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧梦昂志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值