跟 Inthirties学Oracle之checkpoint由来

本文介绍了Checkpoint在Oracle数据库中的重要性及其运作原理。Checkpoint确保了即使在实例崩溃的情况下,已提交的数据仍然保持完整。文章解释了Checkpoint如何通过利用重做日志文件来恢复未同步到数据文件中的更改。

什么是checkpoint?

checkpoint能干什么?

checkpoint是怎么运行的?

这是我们在了解检查点概念的时候,需要理解的问题。也是我们在理解检查点的时候,经常不能整明白的三个问题。 我们先不忙着对这三个文件进行理解。一个事物的出现,必然有他出现的理由,checkpoint也固然如此。 大家都知道在我们的系统里,存储是数据的最后的归属之地,数据库更是如此,只有数据落地生根的进入了物理的存储空间里,这个数据才算是放心的能够保存了, 所以如果要数据保证安全不丢失,及时的把他们放到了安心的地方就可以了,但是反观而谈,进入存储空间势必带来IO,而这个IO往往带来相对的性能上的劣 势。所以要即保证数据的安全,有同时保证性能的优化,这个及时就要做到恰到好处了。万事的两面性就带来了研究的快乐。这个检查点也是来之于此的。对于 Oracle来说主要的文件,大家都知道。无非就是控制文件,数据文件和重做日志文件,此为Oracle数据库实例能够运行的三个为高权重的文件类型了。 控制文件其是数据库实例的信息中心,数据文件更不必谈,是根本,重做日志文件,其实也是用来保证数据库的crash时的数据安全保证的。对于此三种文件其 中最为常见的IO,log buffer写入到log file,buffer cache里的脏数据之写于数据文件。其中前者是顺序写入的。从前向后不断写入,直至写满进行下一组的切换,后者与前者不同,并不是连续写入的,是离散型 的,不同的数据需要写入到不同的块里,不同的块需要进行不同的寻址,切换磁道等操作,这里读也亦然,不过读非本文说关心所在,暂不谈之,log buffer的写入LGWR为之。当数据Commit或者Rollback之刻。LGWR将写log buffer于Log file,我们故称redo log的写入是同步之写入。即数据生效及回滚是,redo条目必是在物理存储上记下来的,由此crash后,实例能够得以恢复。观data, data存储在data file中。用时,加载到buffer cache里,进行修改并进行访问,但是buffer cache中的数据不一定和data file中的一致,为何,因为上面提到了,为保证实例行之高效,修改了的数据(dirty data脏数据)并不会马上写入到数据文件。所以DBWR的写入和commit以及rollback并非同步而为。如此这般,如若实例crash比如断电或者shutdown abort,buffer cache里的dirty data并不能在data file里记录下来,这样岂不是数据将会丢失么,确实,现在data file里的数据并不和我们crash的时候一致。但是我们开启了数据库以后发现,已经提交的数据依然可以表现出来,不过是那些还没有来的及提交的数据没有叻。确实,虽然数据库库里的data file里的data不一致了,不过在startup的过程中,Oracle已经悄然为你上次的abort买单了。上面提到了redo log,这个redo log就是Oracle买单得以实现的手段了。Oracle记录了重做的记录条,根据重做的记录条,把那些还没有体现到data file里的数据重新做过一遍,也就达到目的了。不过,Oracle怎么知道你要做那些重做的内容,他会把所有的重做都做过么,这样来保证他找出来的重做条目就是我们所需的呢,这写就是通过上面提到的checkpoint来实现的。

这里累文叠字般的并没有对我们的checkpoint介绍过多,看似介绍的更多是数据库如果保证我们的数据在高效运行过程中的安全,实为提示大家我们提到的checkpoint并不是保证实例的运行状态的,最后一句话,点明了,checkpoint目的是恢复数据库而来的。是在恢复数据库的时候确定恢复的条目而来的。而别无他用。checkpoint是学习Oracle里的一个大家常觉得困难和不易理解的知识领域,如果你能够先认知下checkpoint不过是Oracle实例在crash recovery里的一个恢复过程中需要用到的手段,那么checkpoint的学习你就已经先有所得了。

一钱窥豹,焉识其貌。本文仅告知checkpoint的由来,哪么checkpoint如何来实现其目的,其又是如何在Oracle里表现,我们在认知checkpoint中又会有哪些误区。在后面的文章中我们再逐一道来。

Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值