当前位置:网站首页>MySQL学习笔记-4.数据更新时的性能问题
MySQL学习笔记-4.数据更新时的性能问题
2022-08-04 16:53:00 【天生我才~~】
文章目录
慕课网MySQL教程
总览




1. 数据更新时的日志问题
1.1 MySQL日志体系


1.2.1 binlog 归档日志

1.2.2 undo Log 回滚日志

- 更新时,写入一个反的sql语句日志,当需要回滚时,操作该日志可以实现回滚效果
1.2.3 redo Log 重做日志


- 写入环形磁盘时机通过参数进行控制

- redo Log 先更新在内存,当查询数据时,先查询内存,因此不会查询磁盘中旧的数据
1.2 数据更新流程
1.2.1 整体流程

每次对数据操作,都要先将磁盘中数据读入内存进行操作
每次都是对内存中的数据进行操作,写回磁盘是异步操作
日志优先,只要redo Log 写进去了,事务就写进去了,就可以 prepare ,可以进行下步提交了
但有个问题,都是写入到内存,如果断电,数据会丢,这就涉及到redo Log 刷盘操作
1.2.2 redo Log 刷盘

- 通过参数设置,将redo Log 写进环形磁盘中的频率
- 异步每秒刷盘,有可能丢失1秒中的更新事务请求
1.2.3 binLog 刷盘

1.2.4 持久化分析

1.2.5 为何redo Log 在binLog之前

- redo Log 决定事务数据是否准备好了,一旦redo Log写入,表明事务已经准备好了,数据已经更新了
- binLog涉及主从复制,不能撤销,只有当redo Log 确定事务已经更新了,才能复制备份,否则,顺序相反的话,数据复制到备库,主库回滚了或者事务更新失败了,redo Log没有写入,会导致主从数据不一致
1.3 常见面试题
更新流程和两日志问题



两阶段提交问题



边栏推荐
猜你喜欢

移动百事通BesTV_R3300-L_S905L_8189_线刷固件包

越来越火的图数据库到底能做什么?

Copycat CNN: Stealing Knowledge by Persuading Confession with Random Non-Labeled Data阅读心得

麒麟信安石勇博士荣获openEuler社区年度开源贡献之星

软件基础的理论

15 days to upgrade to fight monsters and become a virtual fashion creator

Selenium Webdriver驱动自管理

嵌入式系统驱动初级【6】——内核定时器

转型阵痛期,好未来减亏容易增收难?

全世界国家和地区国家顶级域名对照表
随机推荐
Mysql Explain
【IDEA】idea配置
leetcode 006. 排序数组中两个数字之和
WEB 渗透之SSTI 模板注入
How to convert an int attribute into a string in the json format returned by the Go language gin framework?
pygame的freetype模块
Mobile zte ZXV10 B860AV2. 1 - A_S905L2_MT7668_ wire brush the firmware package
LeetCode 1403.非递增顺序的最小子序列
JVM内存和垃圾回收-08.方法区
R语言使用yardstick包的gain_curve函数评估多分类(Multiclass)模型的性能、查看模型在多分类每个分类上的增益(gain)曲线(gain curve)
显示和设置系统日期时间的date命令示例
ping不通百度
18 Data Collection Analysis
面试官:多个线程执行完毕后,才执行另一个线程,该怎么做?
B站回应HR称核心用户是Loser;微博回应宕机原因;Go 1.19 正式发布|极客头条
电气成套设备行业如何借助ERP系统,解决企业管理难题?
shell脚本详解-------循环语句wuile循环和until循环
测试开发必备技能-Jmeter二次开发
Mobile magic box CM211-1_YS foundry _S905L3B_RTL8822C_wire brush firmware package
Minecraft 服务器安装Forge 并添加Mod