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完成。
当当前未刷脏的最老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完成。
相关推荐
Delphi 中实现Redo Undo的一个简单实例,包含源码
redo undo framework source code redo undo framework source code
这个是做实验时,简单基本的Undo、Redo的操作、在一个winForm中实现,并且可以设置Undo的最大次数。包中除了项目外,还附有报告.
Oracle redo undo的说明解释
cpp文件 undo redo 原型设计 部分代码 class Command { public: virtual BOOL UnDo() = 0; virtual BOOL ReDo() = 0; };
Oracle DG下修改redo log和standby redo log日志大小.txt
本工程用vs2008打开,但需要qt库的支持,需要先安装qt-in-vs2008,才可通过编译。或者直接将里面的代码拷贝出来,然后在自己的环境中编译也行。代码中应用了QUndoCommand来实现撤销与反撤销操作。
Oracle_Undo与Redo的通俗
RAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和UNDO管理 收藏.docxRAC下的REDO和...
BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行...
oracle日志,Undo日志记录某数据被修改前的值,可以用来在事务失败时进行rollback;Redo日志记录某数据块被修改后的值,可以用来恢复未写入data file的已成功事务更新的数据。
针对一个window窗体实现了undo/redo功能,包括textBox,checkBox, listBox, comboBox, radioButton以及按钮焦点变化的实现。可能有些小bug思路仅供参考。完整的工程文件,VS打开即可运行,欢迎评论~ 详细说明参见...
一个非常好的例子 void CMyObjCollection::Add(CMyObject* pItem) { ASSERT(Find(pItem) == -1); // 不能多次加入同一对象 m_vecMyObjects.push_back(pItem); pItem->AddRef(); } ...void CMyObjCollection::Remove...
文章目录一、MySQL日志文件类型二、几种日志的对比2-1、用途 redo log undo log binlog2-2、存储内容、格式 redo log undo log binlog2-3、日志生成 redo log undo log binlog2-4、删除策略 redo log ...
实现redo,undo操作,来源于网络分享下。
Multiple Level Undo/Redo多级Undo/Redo功能的实现(7KB)
oracle_redo_undo
Undo/Redo framework for editing controls in a Windows application 在Windows应用程序中编辑控件的撤销/重做框架。
在Element增删改处 添加 IOperationStack .DO(); 方法,即可将Element的操作过程保存到操作堆 自行对Element的变化进行记录,以便在IOperation 中Redo Undo中使用
第9章第9章 redo与undo_a.pdf redo与undo_a.pdf第9章 redo与undo_a.pdf