`
囧囧有神
  • 浏览: 206624 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

DB redo undo日志笔记

 
阅读更多

redo log:

1.用户对DB数据的修改过程是先将数据读取到内存缓存-->修改内存中的值-->写redo日志落盘-->返回结果给用户,由此可以看出redo日志主要作用是提高读写效率,减少对磁盘的随机写,可以合并对db中的某一数据的多次不同操作,由此可以看出如果对磁盘的随机写性能如果同顺序写差不多,redolog 存在的必要性还有多少呢?

2.redo log是循环写入覆盖的,因此在覆盖前内存中脏页必须保证已经被flush到磁盘中

3.脏页的数据指的是那些处于内存中的还没写回DB数据文件的被修改过的数据,内存中专门开辟一块空间来管理这些数据,管理的维度是分为 数据页-->数据块-->数据记录,这些脏页数据需要定期同步回db记录,刷脏的工作主要由page cleaner线程异步来执行,平常不会对用户请求有什么影响,但是当DB负载比较高内存块中的脏页数据量达到临界值就会由用户线程同步刷脏,这时候对用户访问会产生极大影响,成为性能临界点:

写道
当当前未刷脏的最老lsn和当前lsn的距离超过max_modified_age_async(71%)时,且开启了选项innodb_adaptive_flushing时,page cleaner线程会去尝试做更多的dirty page flush工作,避免脏页堆积。
当当前未刷脏的最老lsn和当前Lsn的距离超过max_modified_age_sync(76%)时,用户线程需要去做同步刷脏,这是一个性能下降的临界点,会极大的影响整体吞吐量和响应时间。
当上次checkpoint的lsn和当前lsn超过max_checkpoint_age(81%),用户线程需要同步地做一次checkpoint,需要等待checkpoint写入完成。
当上次checkpoint的lsn和当前lsn的距离超过max_checkpoint_age_async(78%)但小于max_checkpoint_age(81%)时,用户线程做一次异步checkpoint(后台异步线程执行CHECKPOINT信息写入操作),无需等待checkpoint完成。

 

1
1
分享到:
评论

相关推荐

    ORACLE redo undo.docx

    Oracle redo undo 机制详解 Oracle redo undo 是 Oracle 数据库中的一种机制,用于确保事务的可恢复性和撤销性。下面是对 redo undo 机制的详细解释。 redo 机制 redo 机制是 Oracle 数据库中的一种机制,用于...

    redo undo framework source code

    在IT行业中,"redo undo"框架是用于实现撤销/重做功能的核心技术,常见于各种软件和应用程序中,如文本编辑器、图像处理软件、数据库系统等。它允许用户取消最近的操作并恢复先前的状态,提供了对用户交互的强大支持...

    C#做的简单的Undo、Redo功能的实现

    在编程领域,撤销(Undo)和重做(Redo)功能是用户界面中常见的操作,它们允许用户取消或恢复最近的更改。在C#中,我们可以利用.NET框架提供的事件驱动和面向对象特性来实现这样的功能。这篇实验主要探讨了如何在...

    实现Redo Undo的一个简单实例,包含源码

    在IT行业中,"Redo"和"Undo"功能是用户界面设计中的重要组成部分,尤其是在文本编辑器、图形编辑软件或任何允许用户进行可逆操作的应用程序中。它们为用户提供了一种方便的方式来撤销或恢复之前的改动,增加了用户...

    undo redo 原型设计

    cpp文件 undo redo 原型设计 部分代码 class Command { public: virtual BOOL UnDo() = 0; virtual BOOL ReDo() = 0; };

    Oracle_Undo与Redo的通俗

    Oracle_Undo与Redo的通俗 Oracle中的Undo和Redo是两个非常重要的概念,它们都是Oracle数据库中事务管理和恢复机制的关键组件。Undo和Redo都是为了确保数据库的一致性和可靠性。 什么是REDO? REDO记录transaction...

    oracle_redo_undo

    换句话说,会把 Undo 数据当成是表数据或索引数据一样,对 Undo 的修改会生成一些 Redo,这些 Redo 将计入日志。 COMMIT 操作 COMMIT 操作是一个非常快的操作,无论事务大小如何。COMMIT 并没有太多的工作要做,...

    ORACLE 修改redo日志文件 大小的方法

    在Oracle数据库管理中,调整redo日志文件大小是一项重要的维护工作,这直接影响到数据库的性能与稳定性。本文将深入探讨如何在Oracle环境中修改redo日志文件的大小,以及这一操作的具体步骤和注意事项。 ### 一、...

    QT撤消操作(undo/redo)例子

    本工程用vs2008打开,但需要qt库的支持,需要先安装qt-in-vs2008,才可通过编译。或者直接将里面的代码拷贝出来,然后在自己的环境中编译也行。代码中应用了QUndoCommand来实现撤销与反撤销操作。

    C# undo\redo框架

    本文将深入探讨“C# undo/redo框架”的核心概念、设计模式以及如何实现。 1. **命令模式**: 撤销/重做框架通常基于命令模式设计。命令模式是一种行为设计模式,将请求封装为一个对象,使发出请求与执行请求解耦。...

    Oracle DG下修改redo log和standby redo log日志大小.txt

    Oracle DG下修改redo log和standby redo log日志大小.txt

    oracle的undo与redo

    在Oracle中,日志文件发挥着关键作用,其中Undo日志和Redo日志是最核心的两种日志类型。 Undo日志,也称为撤销日志,主要用于事务处理中。它的主要作用是记录事务执行之前的数据库状态,即数据块在被修改之前的所有...

    redo与undo_a.pdf11

    它的主要目的是支持事务的回滚操作,如果事务被撤销, undo日志允许数据库恢复到事务开始之前的状态。在Oracle中,undo信息存储在 rollback segments 或 undo tablespace 中。 "redo与undo_a.pdf"很可能是关于这个...

    多步Undo_Redo的实现

    ### 多步Undo/Redo实现详解 #### 一、引言 在现代软件开发中,尤其是图形编辑或文档编辑应用程序中,Undo/Redo功能是用户体验的重要组成部分。它不仅提高了用户的工作效率,还能增强软件的易用性。在本篇文章中,...

    RAC下的REDO和UNDO管理

    与REDO日志类似,每个RAC实例都有自己的UNDO段,可以通过`undo_tablespace`参数指定。UNDO数据存储在共享存储中,确保在一致性读取和恢复过程中,即使某个节点出现故障,其他节点仍然可以访问所需的UNDO信息。这保证...

    C#实现的undo/redo的window窗体

    针对一个window窗体实现了undo/redo功能,包括textBox,checkBox, listBox, comboBox, radioButton以及按钮焦点变化的实现。可能有些小bug思路仅供参考。完整的工程文件,VS打开即可运行,欢迎评论~ 详细说明参见...

    撤消操作(undo/redo)

    在编程领域,撤销/重做(Undo/Redo)功能是许多应用程序不可或缺的一部分,它允许用户取消或恢复之前的操作。在Qt框架中,Qt提供了一种高效且灵活的方式来实现这一功能,那就是通过QUndoCommand类。QUndoCommand是Qt...

    ReDo UnDo的好例子

    一个非常好的例子 void CMyObjCollection::Add(CMyObject* pItem) { ASSERT(Find(pItem) == -1); // 不能多次加入同一对象 m_vecMyObjects.push_back(pItem); pItem->AddRef(); } ...void CMyObjCollection::Remove...

    3000帧动画图解MySQL为什么需要binlog、redo log和undo log.doc

    MySQL数据库管理系统需要binlog、redo log和undo log三个重要的日志系统,以确保数据的一致性和持久性。下面是对这些日志系统的详细解释: 为什么需要分层设计 MySQL数据库系统采用分层设计,将Server层和存储引擎...

Global site tag (gtag.js) - Google Analytics