Undo日志--mysql详解(十)

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: Undo日志--mysql详解(十)

上篇文章说了redo日志是为了保证持久化,提高效率而产生的的,buffer pool有一个inndb buffer poll size来控制大小,并且默认128m,大于一个1g可以设置多个,但是每次同步持久化是随机I.Oredo log也有日志池,把随机io优化为顺序io,并且占用的地方小。


Undo日志


如何保证事务里的原子性,当数据执行到一半需要回滚,或者数据库发生宕机,这时候就需要保证事务原子性,所以回滚应该只有发生新增,修改,删除时候才考虑,select并没有回滚操作。


当在一个事务里,对数据做了改动,这时候就会给事务生成一个唯一的事务ID,生成的机制也跟row_id类似,会有一个全局的max_trx_id来维护,每次有新的数据就自增1


这里除了trx_id外,还有roll_pointer,他本质上就是一个指针,指向对应的undo日志。


删除的时候如何记录的,这里比较特殊,之前我们说过页的page header存着delete mark,删除状态,在没提交之前,是先把状态修改,为什么会有这一步呢,是为了实现mvcc的功能。第二步提交之后,才会真的删除,这时候会把数据加入垃圾链表。这时候delete删除之后,会有一个old_roll_pointer指向之前的insert,组成版本链。


Update更新的时候分为两种情况,

一种是不更新主键的情况,这时候又分为更新的列长度是否发生变化,未发生,则就地更新,如果长度变化了,则会先删除之前的数据,再新增,重排序。


一种是更新主键的情况,会对该记录先进行delete mark操作,之后再插入新的数据,也就是说,每次都会产生两条undo log


我们前面说过表空间是很多页组成,fil_page_index存储聚簇索引二级索引,


fil_page_type_fsp_hdr存储表空间头部信息,这里存的就是fil_page_undo_log


Undo日志是分为两大类,一类是可以提交直接删除,一类还是为了mvcc服务。在undo日志中,每个页分类不同的链表连接起来,insert undoupdate undo链表。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
SQL 运维 关系型数据库
深入探讨MySQL的二进制日志(binlog)选项
总结而言,对MySQL binlogs深度理解并妥善配置对数据库运维管理至关重要;它不仅关系到系统性能优化也是实现高可靠性架构设计必须考虑因素之一。通过精心规划与周密部署可以使得该机能充分发挥作用而避免潜在风险带来影响。
275 6
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
860 23
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
SQL 存储 关系型数据库
简单聊聊MySQL的三大日志(Redo Log、Binlog和Undo Log)各有什么区别
在MySQL数据库管理中,理解Redo Log(重做日志)、Binlog(二进制日志)和Undo Log(回滚日志)至关重要。Redo Log确保数据持久性和崩溃恢复;Binlog用于主从复制和数据恢复,记录逻辑操作;Undo Log支持事务的原子性和隔离性,实现回滚与MVCC。三者协同工作,保障事务ACID特性。文章还详细解析了日志写入流程及可能的异常情况,帮助深入理解数据库日志机制。
1890 0
|
9月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
543 158
|
9月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1438 152
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1048 156
|
9月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
594 156
|
9月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
698 161

推荐镜像

更多