首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

面试系列-undo log

undo log的存储机制 undo log的存储由InnoDB存储引擎实现,数据保存在InnoDB的数据文件中。...其中事务ID每次递增,回滚指针第一次如果是insert语句的话,回滚指针为NULL,第二次update之后的undo log的回滚指针就会指向刚刚那一条undo log日志,依次类推,就会形成一条undo...undo log的工作原理 1、事务A执行update操作,此时事务还没提交,会将数据进行备份到对应的undo buffer,然后由undo buffer持久化到磁盘中的undo log文件中,此时undo...undo log能同时保证原子性和持久化 更新数据前记录undo log; 为了保证持久性,必须将数据在事务提交前写到磁盘,只要事务成功提交,数据必然已经持久化到磁盘; undo log必须先于数据持久化到磁盘...; undo log的相关参数 innodb_undo_directory:指定undo log日志的存储目录,默认值为./。

23230

收缩undo表空间

通常情况下,如果undo表空间的处于自动扩展且未指定最大值的情形,对于使用小表空间模式的数据库,undo表空间可能会一再增长,直到达到32GB。...有关表空间,undo表空间的文章可参考: Oracle 表空间与数据文件 Oracle 回滚(ROLLBACK)和撤销(UNDO) 检查及设置合理的undo表空间 1、undo表空间收缩的基本步骤...     a、使用较小的尺寸创建一个新的undo表空间            SQL> create undo tablespace UNDO_RBS1 datafile 'undorbs1.dbf'...size ;      b、设置新的undo表空间为系统undo表空间            SQL> alter system set undo_tablespace=undo_rbs1...d、使用原始undo表空间名创建一个新的小尺寸的undo表空间并且且换回系统undo,删除过渡undo表空间(此步骤可选) 2、收缩undo表空间示例 --环境 goex_admin@CICCFIX>

2.7K10

深入学习:In Memory Undo

在传统的事务更新过程中,如果一条数据记录被更新,就会从buffer cache中读取/分配一块UNDO数据块,并且立即会写入一条UNDO条目。...当发生IMU commit或IMU flush时,才会通过IMU map将这些IMU node记录的undo信息写入undo buffer block中。...整个过程中UNDO所产生的redo信息则大大减少。 隐含参数_in_memory_undo用于控制IMU特性的开关,可以在会话/系统级立即生效,默认为true。...3、IMU CR 在传统事务中,需要进行一致性读时,会从相应的UNDO数据块中读入undo数据进行undo操作。...而在IMU中,在发生IMU commit或IMU flush之前,这些undo数据并未写入UNDO数据块中,此时一致性读就从IMU pool中读取相应的IMU node中的undo信息。

1.1K80

回滚段undo

UNDOTBS1 Undo配置参数含义 -DNDO_MANAGEMENT undo的管理模式,分自动和手动 -UNDO_TABLESPACE 当前正在被使用的undo表 -...Undo调优 Undo的设置取决于我们实际的生产系统。如何设置undo更合理地为我们工作呢?...Undo数据的存放时间:   也就是undo_retention 参数所对应的时间,undo上有数据存放时间与undo大小的密切关系。存放时间越长,需要的表空间越大。...Undo表空间的历史信息: 如何合理设置undo表空间的大小和存放时间呢?...那么就需要参考历史记录 关于如何设置undo表空间的大小可以参见: 【技术分享】如何确定或调整undo表空间的大小 关于如何设置undo表空间的存放时间可以参见: undo_retention:确定最优的撤销保留时间

1.7K42

Undo日志--mysql详解(十)

Undo日志 如何保证事务里的原子性,当数据执行到一半需要回滚,或者数据库发生宕机,这时候就需要保证事务原子性,所以回滚应该只有发生新增,修改,删除时候才考虑,select并没有回滚操作。...这里除了trx_id外,还有roll_pointer,他本质上就是一个指针,指向对应的undo日志。...一种是更新主键的情况,会对该记录先进行delete mark操作,之后再插入新的数据,也就是说,每次都会产生两条undo log。...我们前面说过表空间是很多页组成,fil_page_index存储聚簇索引二级索引, fil_page_type_fsp_hdr存储表空间头部信息,这里存的就是fil_page_undo_log。...Undo日志是分为两大类,一类是可以提交直接删除,一类还是为了mvcc服务。在undo日志中,每个页分类不同的链表连接起来,insert undo,update undo链表。

40410

Oracle参数(Undo_Retention)

前面已经对Oracle的基本参数做了介绍,接下来会不定期写其他的参数 ---- Undo_Retention ?...参数类型:整型 默认值:900 通过ALTER SYSTEM修改 此为基本参数 取值范围:0 to 2的31次方 - 1 ---- 自动undo段管理 以下针对自动undo段管理(手动不做说明) Undo...Retention为已提交过的数据(脏数据)在undo表空间保存的时间的最小值 Oracle根据UNDO空间使用量动态调整 Undo_Retention 大小,一般为undo空间的85% UNDO...Retention一般为最长执行语句的时间 UNDO Retention时间到期后过期数据不会自动删除,undo空间不足时才会覆盖 Retention Guarantee为NO时,对于undo...表空间数据文件是固定大小的,如果空间不足(所有未过期都被覆盖)会覆盖未过期的undo数据 Retention Guarantee为NO时,对于undo表空间是自动扩展的,当空间不足(所有未过期都被覆盖

97840

谈谈Redo Log和Undo Log

概述 在MYSQL中,日志是非常重要的,其中Redo log 和undo log都是引擎层(innodb)实现的日志,redo log 是重做日志,提供 前滚 操作,undo log 是回退日志,提供...Undo Log undo Log(回滚日志)是MySQL中的一种重要数据结构,用于实现事务的ACID特性中的"Atomicity"(原子性)和"Isolation"(隔离性)。...undo log产生和销毁:Undo Log在事务开始前产生;事务在提交时,并不会立刻删除undo log,innodb会将该事务对应的undo log放入到删除列表中,后面会通过后台线程purge thread...进行回收处理 ​编辑 事务A执行update更新操作,在事务没有提交之前,会将旧版本数据备份到对应的undo buffer中,然后再由undo buffer持久化到磁盘中的undo log文件中, 之后才会对...undo log日志文件中新增一条delete语句,如果发生回滚就执行逆操作。

20911

MySQL中undo日志介绍

也就是说,undo日志是为了将数据恢复到修改之前的样子,因此在对数据库进行修改的时候,我们需要知道,这个过程中会产生redo日志和undo日志。...,undo日志的段位于共享表空间内。...删除方式: 还有一点需要注意,事务共享表空间中写入undo日志的过程同样需要写入redo日志,事务一旦提交,也就意味着事务的持久性生效,那么undo日志则不被需要,但是innodb并不会把这个undo...日志直接删除,而是放在一个undo日志的链表中,到底什么时候删除取决于mysql的purge线程,这样做是为了避免其他的事务需要通过undo日志来得到这条记录之前的版本。...,具体的方法是,事务提交的时候,现将undo页放入链表中,然后判断这个undo页的使用空间是否小于75%,如果是的话,那么这个undo页就可以被重用,之后的undo日志就可以追加在当前undo日志的后面

1.7K20

【MySQL系列】- 浅析undo log

undo log 是什么 undo log可以称为撤销日志、undo 日志,它记录着事务回滚前的数据。...undo 日志存在于undo日志段中,undo日志段包含在回滚段中。 undo日志段 undo日志段(undo log segment)是undo日志的集合。...undo 日志段包含在回滚段中,一个undo日志段可能包含来自多个事务的undo日志,一个undo日志段一次只能被一个事务使用,但是在事务提交或回滚时,释放undo日志段以后可以重用它。...undo日志段也可以被称为“undo segment(undo 段)”。 回滚段 回滚段(rollback segment)是包含undo日志的存储区域。回滚段通常位于系统表空间中。...如果undo表空间不存在,则其余的用于系统表空间。 undo slot 回滚段实际上是一种Undo 文件组织方式,每个回滚段又由多个undo slot组成。

55620

Mysql的redo和undo日志

undo 1.1 undo (记旧值)undo日志用于存放数据修改被修改前的值,假设修改 tba 表中 id=2的行数据,把Name=‘B’ 修改为Name = ‘B2’ ,那么undo日志就会用来存放...undo tablespace文件的大小,当启动了innodb_undo_log_truncate 时,undo tablespace 超过innodb_max_undo_log_size 阀值时才会去尝试...innodb_undo_tablespaces:设置undo独立表空间个数,范围为0-128, 默认为0,0表示表示不开启独立undo表空间 且 undo日志存储在ibdata文件中。...表空间中(如果没有打开独立Undo表空间,则存放于ibdata中) 如果我们使用独立Undo tablespace,则总是从第一个Undo space开始轮询分配undo 回滚段。...在事务中的应用 Undo Log Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。

33030

Oracle参数解析(undo_retention)

从这节开始讲其他的参数,参数从v$parameter中提取 基本参数请看如下链接: http://www.zhaibibei.cn/oralce/oracle-parameter/ 如无特殊说明数据库版本为11.2 undo_retention...参数类型:整型 默认值:900 修改:修改需要重启数据库 基础参数:否 取值范围:0到2的31次方-1 RAC中建议各实例为相同的值 ---- 取值意义 该参数决定UNDO信息在UNDO表空间里的最短时间...(秒) 对于自动扩展的UNDO表空间,UNDO信息会至少保留该参数的时间,并自动自动调节时间以确保查询需求 对于固定大小的UNDO表空间,UNDO信息会根据表空间大小和历史使用情况尽可能的保留长的时间,...除非retention guarantee被启用,否则该参数被忽略 对于LOB字段,数据库不会自动调节UNDO 保留时间,其保留时间为该参数的大小 我们可以查看V$UNDOSTAT视图的TUNED_UNDORETENTION...字段来查看当前的UNDO保留时间 注意,当UNDO表空间空间不足时,无关乎该参数,数据库也会覆盖未过期的UNDO信息 ---- 实际截图: ?

1.7K30
领券