mysql基础架构(一条update语句如何执行)
update语句如何执行?
- 一、流程分析
- 二、重要的日志模块
- 1、redo log
- 2、binlog
- 3、两阶段提交
- 三、小结
一、流程分析
与查询流程不一样的是,更新流程涉及,两个重要的日志模块,redo log(重做日志)和 binlog(归档日志)。
二、重要的日志模块
1、redo log
举例:
酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。
如果有人要赊账或者还账的,掌柜进行如下操作:
1、一种做法直接把账本翻出来,把这次赊的帐添加或者删除
2、先用粉板记录下来,等打烊了,在把账本翻出来核算。
同样mysql也有这样的问题,每一次更新操作,都需要写进磁盘,磁盘也要找到那个记录修改,整个过程IO成本很高,所以用酒店掌柜的方法,模拟实现mysql思路。
粉笔配置账本过程,就是mysql中WAL技术,Write-ahead-logging,它的关键点,先写日志,在写磁盘,也就是先写粉板,等不忙的时候,在写账本。
如果赊账不多,可以等到打烊在处理,如果特别多,已经写不下了,掌柜只能放下手头的活,把粉笔板的一部分数据更新到账本上,然后再把这些记录擦除调。
于此相似,Innodb也是一样的,redo log固定大小,每个文件1G
2、binlog
server层的日志为,binlog归档日志
非常重要:
redolog写成两个阶段来提交了。
3、两阶段提交
两阶段提交目的是:让两份日志逻辑一致。
如何回到半个月内任意一秒的状态,binlog会追加形式,备份系统一定保留最近半个月的所有binlog文件,而且定期做整库备份,一天或者一周。
问题:redolog 和 binlog提交不一致会导致什么问题?
三、小结
两阶段提交是跨系统维持数据逻辑一致性的常用方案。
binlog日志文件不能去除:
redolog只有Innodb有,别的引擎没有
另一个原因是:redolog是循环写的,不持久保存,binlog具有归档的功能,是redolog不具备的。
问题:
mysql基础架构(一条update语句如何执行)相关推荐
- 【mysql技术内幕1】mysql基础架构-一条SQL查询语句是如何执行的
文章目录 1 一条SQL查询语句是如何执行的 2 mysql体系结构 3 InnoDB存储引擎 4 总结 1 一条SQL查询语句是如何执行的 通常我们使用数据库,都是将数据库看成一个整体,我们的应 ...
- MySQL中:一条update语句是怎样执行的
- 解析MySQL基础架构及一条SQL语句的执行流程和流转
前言 本篇文章分析SQL语句在MySQL中的执行流程,包括SQL的查询在MySQL内部会怎么流转,SQL语句的更新是怎么完成的.在分析之前我们一起看看MySQL的基础架构,知道了 MySQL由那些组件 ...
- mysql update from 语句_MySQL高频面试题01期:一条update语句的生命历程
在有关 MySQL 的面试时,是不是曾经有被问到过:一条 update 语句的生命历程是怎样的?今天就来聊聊这一面试题. 这篇文章通过这条语句进行讲解: update test set a=5 whe ...
- mysql 合并两个update_如何将多条update语句合并为一条
需求: 如何将多条update语句合并为一条update语句: 如,update table1 set col='2012' where id='2014001' update table1 set ...
- 很多条update语句mysql优化_MySQL批量update语句优化
对MySQL中的表进行批量update的时候,如果每个记录用一个update语句,5000条记录的话,大概需要30秒钟.下面采用的case when方法可以把5000条update拼成一条: Upda ...
- mysql执行两条update语句
执行两条update语句,没有join关联时 update dp_auto_group_price dagp ,dp_auto_group dag set dagp.is_pub = 0 ,dag.s ...
- MySQL 基础 (一)- 查询语句
MySQL 基础入门 Day2 MySQL 基础 (一)- 查询语句 一.学习内容 1. 导入示例数据库 1.1 MySQL示例数据库结构 2. SQL是什么?MySQL是什么? 2.1 SQL 2. ...
- mysql 8.0 一条insert语句的具体执行流程分析(三)
代码版本:mysql 8.0.22 编程语言:c++ && c++11 && c++14 && c++17 上一篇文章:mysql 8.0 一条inse ...
最新文章
- android四大组件 服务,Android四大组件之Service
- idea ctrl+shift+f快捷键失效
- OpenGL 纹理Textures
- python删掉txt第一列_Python3.5 处理文本txt,删除不需要的行方法
- MOS管的主要参数与重要特性
- 配置 Sybase数据源
- Linux版本tomcat下载及安装
- 信息学奥赛一本通C++语言——1051:分段函数
- cubemx lan8720a ping不通_行刑的刀越用越钝,为啥刽子手却从不去磨?原因让外国人想不通!...
- 代码英雄:波澜壮阔的操作系统之战(音频+长文)
- 达拉草201771010105《面向对象程序设计(java)》第十七周学习总结
- jquery页面跳转带cookie_python socket编程:实现redirect函数、cookie和session
- 学习计算机语言入门必看
- ESP8266和腾讯云的使用
- JAVA我的世界怎么做成就_我的世界:又一人解锁100%成就!这几项公认最难任务,你能完成吗...
- 什么是大小端?如何判断大小端
- CSS3之多列布局columns学习
- 螺旋无限延伸_八卦中的双螺旋结构,无限大∞符号隐含的秘密
- PaddleNLP实战:应用NeZha模型做微博情感6分类
- matlab奇异矩阵高效求逆,奇异矩阵求逆问题!!!
热门文章
- Java 枚举类型的应用
- Redis源码解析1:SDS--完美的C字符串替代
- FusionInsight环境的安装部署(FI的安装部署)
- Zebra BI for Excel
- 【PHP】PHP MySQL问题 phpinfo() 没有显示MySQL模块
- c51单片机c语言取反运算符,单片机c语言教程:C51运算符和表达式
- 如何修改默认的FTP帐号或密码
- OllyDBG破解入门教程[图文]教程
- CSAPP 3e Attack lab
- 项目设计:基于YOLO目标检测算法的安全帽/口罩/汽车/行人/交通标志...检测