当前位置: 首页 > news >正文

MySQL架构全面理解

在执行下面这个查询语句的时候,我们看到的只是输入一条语句,返回一个结果,却不知道这条MySQL语句的内部执行过程。

select * from user where id=10;

一条SQL语句的查询过程
在这里插入图片描述
Server层
负责处理SQL语句、解析、优化、缓存等
负责权限管理,用户认证
提供各种SQL函数和存储过程

连接器
连接器负责跟客户端建立连接、获取权限,维持和管理连接。

查询缓存
之前执行过的语句及其结果会以key-value对的形式存在,被直接缓存在内存中。
弊大于利,对于更新压力大的数据库来说,查询缓存的命中率会非常低。

分析器
先做词法分析:负责MySQL中提取关键字;
语法分析:判决SQL语句是否满足MySQL语法;
优化器:基于同一个查询语句的多个查询方案中找出效率最高的。
执行器:执行SQL语句;
至此,一个SQL的查询过程完成了。

一条SQL更新语句的流程

update T set c=c+1 where ID=2;

连接器
第一步,也是需要进行连接。

优化器
决定使用id这个索引
执行某一条具体的更新。
与查询不一样的是,更新有两个重要的日志模块,redo log(重做日志)和binlog(归档日志)

redo log
当一条记录需要更新的时候,InnoDB引擎会先把记录写到redo log里面,并更新内存。
后续将操作记录更新到磁盘中。
redo log固定大小,4G;写满后,会进行循环的写。

binlog
记录了哪些操作以及操作的内容,后续数据库丢失可以从binlog进行恢复
在这里插入图片描述

http://www.dtcms.com/a/313698.html

相关文章:

  • 克罗均线策略思路
  • 无刷电机母线电容计算
  • SpringBoot AI自动化测试实战案例
  • 大模型能力测评(提示词请帮我把这个项目改写成为python项目)
  • 译|数据驱动智慧供应链的构成要素与关联思考
  • 死锁深度解析:原理、检测与解决之道
  • C++ <type_traits> 应用详解
  • 志邦家居PMO负责人李蓉蓉受邀为PMO大会主持人
  • 【深度学习新浪潮】谷歌新推出的AlphaEarth是款什么产品?
  • ZStack Cloud 5.3.40正式发布
  • 《测试驱动的React开发:从单元验证到集成协同的深度实践》
  • JAVA中的String类方法介绍
  • 【Bluetooth】【Transport层篇】第三章 基础的串口(UART)通信
  • 智能图书馆管理系统开发实战系列(六):Google Test单元测试实践
  • SAP 服务号传输(同环境的不同客户端SCC1,跨环境的STMS)
  • 一个网页的加载过程详解
  • lua中 list.last = last 和list[last]=value区别
  • C语言实现猜数字游戏
  • 多模态大模型综述:BLIP-2详解(第二篇)
  • 问题集000
  • 图像张量中的通道维度
  • 力扣经典算法篇-41-旋转图像(辅助数组法,原地旋转法)
  • Kubernetes中ingess以及它和nginx的关系
  • 单表查询-模糊匹配
  • CMake 命令行参数完全指南(4)
  • sqli-labs靶场less26/a
  • awk对文本进行列处理
  • 【实习总结】Qt通过Qt Linguist(语言家)实现多语言支持
  • 抖音全新推荐大模型RankMixer
  • 【AI论文】ScreenCoder:通过模块化多模态智能体推动前端自动化中的视觉到代码生成技术发展