• Home
  • Archives
  • 随笔
所有文章 友链 关于我

  • Home
  • Archives
  • 随笔

Mysql基础看这篇就够了

发布于: 2023-06-18
更新于: 2023-07-09

Mysql基础

主要是讲mysql的基础构成还有一些sql的原理,本文中也有对部分网上文章、课程的总结回顾,在末尾处会贴出链接,也会有些自己总结的流程图归纳,欢迎交流讨论

基本架构

@startuml
autoactivate on

group 服务器server层
client->连接器: 获取数据库连接
autonumber 1.1
连接器->查询缓存: 查询是否有缓存数据
note over of 查询缓存: 8及以上版本已移除
查询缓存->连接器: 若内存中有,则返回数据

autonumber 2.1
连接器->分析器: 如果查询缓存没有,则语句语法解析
分析器->优化器: 执行计划生成、索引选择
优化器->执行器: 操作引擎,返回结果
end group

group 引擎层
autonumber 3
执行器->存储引擎: 调用实际存储数据,执行读写
note over of 存储引擎: 常见的有MyISAM、InnoDB、Memory
end group
@enduml

查询缓存

对于写压力大的业务,频繁更新缓存压力大,且带来收益不大,每次对表的更新,都会触发表的查询缓存全部清空

8.0中移除了这个模块

优化器

生成执行计划时,会决定sql的执行方式,比如常见的当查询条件涉及两个索引or两张表时,优先从哪个索引、哪张表上进行查询,都会在这步进行生成

执行器

  • 权限校验
  • 调用存储引擎获取数据,如果遇到符合条件的加入结果集,直到满足查询条件后,将结果集返回给client

更新实现方式

架构

autoactivate on

autonumber 1.1
group 找到要更新的数据
client->执行器: 更新语句
执行器->InnoDB: 调用引擎更新
InnoDB->内存: 查询当前行是否在内存中
内存->磁盘: 如果不存在,则会把对应行的页数据加载进缓存
磁盘->内存: 加载数据
内存->InnoDB: 返回对应行
end group

group 更新到内存
autonumber 2.1
InnoDB->内存: 对应行数据做更新,并写入内存
end group

group WAL(write-Ahead-logging)写日志
autonumber 3.1
InnoDB->redolog: 将数据写入redoLog,目前事务处于prepare阶段
InnoDB->MyISAM: 写入binLog
note over of MyISAM: MySQL默认自带引擎是MyISAM,这个日志主要做归档使用,而redoLog是InnoDB引入的,借助这个才实现了crash-safe的功能
end group

TODO 待继续补充 2023-06-18

参考文章

Mysql实战45讲

Mysql基础看这篇就够了
/archives/9cebe623/
作者
tyrantqiao
发布于
2023-06-18
更新于
2023-07-09
许可协议
CC BY-NC-SA 4.0
赏

蟹蟹大佬的打赏,大家一起进步

支付宝
微信
  • 面经
  • sql
  • Mysql

扫一扫,分享到微信

微信分享二维码
业务中事务一致性怎么处理
业务架构的思考理解
© 2024 tyrantqiao 本站总访问量次 本站访客数人次 载入天数...载入时分秒...
  • 所有文章
  • 友链
  • 关于我

tag:

  • 复盘
  • 我
  • 规划
  • java
  • 面试
  • 源码
  • 架构
  • Hadoop
  • HTTP
  • TCP
  • 学习笔记
  • IDEA
  • maven
  • idea
  • Java
  • jdk
  • 面经
  • linux
  • 爱情
  • mysql
  • 性能
  • sql
  • Mysql
  • JAVA
  • 技术
  • Redis
  • MQ
  • Spring
  • 数据库
  • TIDB
  • spring
  • unity
  • chatgpt
  • 经验分享
  • 前端
  • redis
  • vue
  • git
  • shadowsocks
  • hexo
  • blog
  • bug
  • 开发
  • 业务
  • jvm
  • 算法
  • MySQL
  • nginx
  • Linux
  • mq
  • db
  • springCloud
  • ssh
  • python
  • 爬虫
  • test
  • vim
  • 影视剧
  • 中间件
  • 事务
  • 性格
  • 音乐
  • 程序员
  • 随笔
  • mybatis
  • 演讲
  • 域名
  • 猫咪
  • 她
  • github
  • 计划
  • 旅游
  • 软件
  • 心理
  • 情商
  • 幽默
  • 才艺
  • 穿搭
  • 编程
  • 排序
  • 查找
  • 缓存
  • 网络
  • 设计模式
  • c
  • 课程设计
  • centos
  • 数学
  • 本网站主题yilia设计者的主页
如果有问题或者想讨论的可以联系[email protected]或者[email protected]