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

Mysql Innodb引擎执行过程

Mysql Innodb引擎执行过程

  • Mysql内部组件
  • Innodb引擎
  • update语句执行过程
  • binlog

Mysql内部组件

  1. 客户端
  2. Server层:连接器、词法分析器、优化器、执行器
  3. 引擎层:Innodb、MYISAM、memory

Innodb引擎

  1. Buffer Pool:数据操作先从Buffer Pool中找数据,没有的话从磁盘中加载进来;修改数据也是先修改Buffer Pool,后面再刷到磁盘
  2. Redo log Buffer:redo log先写buffer,再顺序写到磁盘的日志文件中
  3. Undo log:undo log顺序写入磁盘中日志文件中,mvcc机制用到
  4. Redo log:磁盘中保证持久性的文件,如果Buffer Pool中的数据刷入磁盘失败,就要用到此文件

update语句执行过程

  1. 先去Buffer Pool找,如果当前处理不存在,则从磁盘ibd文件中load当前页的数据到Buffer Pool
  2. 写入Undo log日志文件
  3. 更新update的修改到Buffer Pool中
  4. 写redo log到Redo log Buffer
  5. redo log 顺序写入磁盘redo日志文件中
  6. 写binlog(属于server层)
  7. 提交事务commit标记写入redo log日志文件中
  8. 系统空闲时把Buffer Pool中的数据刷入磁盘中,以页为单位

binlog

binlog 5.7版本默认关闭,8.0版本默认打开。可以用来恢复数据或主从复制。

#查看binlog相关参数
showvariables like '%log_bin%';

开启binlog需要在配置中增加如下配置:

#log‐bin设置binlog的存放位置,可以是绝对路径,也可以是相对路径,这里写的相对路径,则binlog文件默认会放在data数据目录下
log‐bin=mysql‐binlog
#ServerId是数据库服务器id,随便写一个数都可以,这个id用来在mysql集群环境中标记唯一mysql服务器,集群环境中每台mysql服务器的id不能一样,不加启动会报错
server‐id=1
#其他配置
binlog_format=row#日志文件格式,下面会详细解释
expire_logs_days=15 #执行自动删除binlog日志文件的天数,默认为0,表示不自动删除
max_binlog_size=200M #单个binlog日志文件的大小限制,默认为1GB

http://www.kler.cn/a/595155.html

相关文章:

  • Day11 动态规划入门
  • 又双叒叕Scrapy爬虫相关的面试题及详细解答
  • 【React】基于自定义Hook提取公共逻辑
  • 记一次线上SQL死锁事故
  • 【数据结构】栈(Stack)、队列(Queue)、双端队列(Deque) —— 有码有图有真相
  • 深入Python C API:掌握常用函数与实战技巧
  • NAT 实验:多私网环境下 NAPT、Easy IP 配置及 FTP 服务公网映射
  • Python与命令行参数
  • 关于Flask框架30道面试题及解析
  • 【蓝桥杯速成】| 9.回溯升级
  • C/C++错误信息
  • 详细说明脚本评估和耗时较长的任务
  • mac上安装nvm及nvm的基本语法使用!!
  • 基于DeepSeek-R1 的RAG智能问答系统开发攻略
  • llama源码学习·model.py[3]ROPE旋转位置编码(4)ROPE的应用
  • 在linux服务器部署Heygem
  • 3月21号
  • 【设计模式】三十一、状态模式
  • [数据结构]排序之 归并排序(有详细的递归图解)
  • 微服务分层架构详解:表示层、应用层与基础设施层的协同工作