论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
云原生
›
MySQL团体架构
MySQL团体架构
忿忿的泥巴坨
论坛元老
|
5 天前
|
显示全部楼层
|
阅读模式
楼主
主题
2019
|
帖子
2019
|
积分
6057
目次
1 客户端
2 服务端
2.1 Server层
2.1.1 连接器
2.1.2 查询缓存
2.1.3 词法器
2.1.4 优化器
2.1.5 实验器
2.2 存储引擎层
1 客户端
● 客户端为连接MySQL服务端的工具大概驱动,比如JDCB,ODBC等等
● 用于连接现在服务器,并且发送需要实验的SQL
2 服务端
2.1 Server层
● 负责处理惩罚SQL语句,解析优化,缓存等
● 提供权限管理,用户认证
● 提供了各种SQL函数和存储过程
● 提供了复制,备份,规复等高级功能
● Server层有自己的日志体系,binlog日志
● binlog纪录了所有的DML(INSERT,UPDATE,DELETE)语句
● binlog只要用于复制和规复操作
2.1.1 连接器
● 负责吸收客户端的连接
● 验证是否有权限登录
● 维护连接
● 默认异连接上的客户端空闲8小时后会被服务端自动断开
连策应该留意的问题
● 频繁创建和关闭连接可能会对性能产生负面影响,通常用连接池来管理数据库连接
● 利用长连接时,有可能会因为产时间运行导致MySQL服务端内存占用高未开释问题,可实验RESET CONNECTION下令重置mysql连接开释内存(当地利用MySQL8实验下令报错)
2.1.2 查询缓存
● MySQL5.7版本,查询时先查询缓存此语句是否实验过
● 之前实验的SQL语句会作为key,查询结果作为value存储在查询缓冲中
● 假如命中缓存,将直接返回查询结构
● 假如未命中,才真正实验查询逻辑
相干参数
● query_cache_size:用于缓存巨细
● query_cache_type:设置利用缓存的场景
○ 0(OFF):不利用query cache
○ 1(ON):利用query cache
○ 2(DEMOND):查询时利用sql_cache参数才利用query cache
● MySQL8中去除了查询缓存机制
● 因为对于更新频发的表来说,缓存命中率会非常低
● 对于静态表,普遍上都会在业务层做缓存,不会利用到MySQL缓存数据
2.1.3 词法器
● 若查询缓存未命中,则会实验分析器来分析sql语句是否正当,主要进行词法分析和语法分析两个阶段
● 词法分析:
○ 主要负责从SQL语句中提取关键字,比如表名,字段名等等
○ 词法分析阶段从information_schema库中获取表结构信息
● 语法分析
○ 判断输入的语句是否满足MySQL语法
○ 假如语法错误,就会返回错误提示
● 在分析阶段也会对数据库的表级权限和数据库权限进行验证
2.1.4 优化器
● 颠末了分析器,若语法精确,则会进入优化器
● 优化器的作用是查询重写,选择最佳实验路径,生成实验筹划
● 查询重写:对原始的查询SQL进行重写,比如将子查询转换为join连接等
● 选择最佳实验路径:基于统计信息,选择利用哪个索引,确定表的连接顺序以及是否利用临时表,文件排序等策略
● 生成实验筹划:基于以上分析,生成SQL实验筹划,详细描述了怎样从存储引擎获取数据,进行过滤,排序和聚合等操作
2.1.5 实验器
● MySQL通过分析器知道了你要做什么
● 通过优化器知道了该怎么做
● 通过实验器开始实验语句
打开表的时间,实验器就会根据标的引擎界说,去利用这个引擎提供的接口
● 调用引擎接口取这个表的第一行,判断是否满足条件,假如不是则跳过,假如是则将这行存在结果集中
● 调用引擎接口获取下一行,重复雷同的判断逻辑,知道取到这个表的最后一行
● 实验器将上述遍历过程中以是后满足条件的行构成纪录集作为结果返回给客户端
2.2 存储引擎层
● 负责数据的存储和检索
● MySQL支持多种存储引擎,比如InnoDB,MyISAM,Memory等等
● InnoDB是MySQL默认的存储引擎,支持事件,行级锁以及外键约束
● InnoDB有自己的日志体系,redo log(重做日志)和undo log(打消日志)
● redo log用于包管事件的长期性
● undo log用于支持事件的原子性和多版本并发控制(MVCC)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
忿忿的泥巴坨
论坛元老
这个人很懒什么都没写!
楼主热帖
axios 传递参数的方式(data 与 params ...
Swift字符串操作-持续更新-2022 ...
【iOS逆向与安全】frida-trace入门 ...
springmvc异常处理解析#ExceptionHandl ...
Kubernetes(K8S) Controller - Deploym ...
食品商城网站设计—食品商城购物网站(8 ...
MVCC - Read View的可见性判断理解 ...
隐匿自己的c2服务器(一)
最佳实践-使用Github Actions来构建跨 ...
PHP001
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表