📜  DBMS 中的检查点

📅  最后修改于: 2021-09-27 15:00:19             🧑  作者: Mango

为什么我们需要检查点?
每当在实时环境中创建事务日志时,都会占用大量存储空间。同时跟踪每个更新及其维护可能会增加系统的物理空间。最终,随着大小不断增长,可能无法处理事务日志文件。这可以通过检查点解决。用于删除所有以前的事务日志并将它们存储在永久存储中的方法称为检查点

什么是检查点?
检查点用于声明一个点,在该点之前 DBMS 处于一致状态,并且所有事务都已提交。在事务执行期间,会跟踪此类检查点。执行后,将创建事务日志文件。

到达保存点/检查点后,日志文件会通过将其更新保存到数据库来销毁。然后创建一个新日志,其中包含即将进行的事务执行操作,它将被更新,直到下一个检查点,过程继续。

如何在数据库中使用检查点?
脚步 :

  1. 将 begin_checkpoint 记录写入日志。
  2. 在稳定存储中收集检查点数据。
  3. 将 end_checkpoint 记录写入日志。

执行并发事务时系统崩溃和恢复时的行为如下所示 –

了解多个事务中的检查点

  • 恢复系统从末尾向后读取日志到最后一个检查点,即从 T4 到 T1。
  • 它将跟踪两个列表 – 撤消和重做。
  • 每当有一个带有指令 或只有 的日志时,它就会将该事务放入重做列表中。 T2 和 T3 包含 而 T1 将只有 。这里,T1、T2 和 T3 在重做列表中。
  • 每当发现没有提交或中止指令的日志记录时,该事务将被放入撤消列表 但没有 因为它是一个正在进行的事务。 T4 将被放入撤销列表。

重做列表中的所有事务都与它们以前的日志一起删除,然后在保存它们的日志之前重做。撤消列表中的所有事务都被撤消并删除其日志。

检查点的相关性:
检查点是一种在符合 ACID 的 RDBMS 中添加 C 值的功能。如果数据库中出现意外关闭,则使用检查点进行恢复。检查点在某些时间间隔内工作,并将所有脏页(修改页)从日志中继写入数据文件,即从缓冲区到物理磁盘。它也被称为脏页的硬化。它是一个专用进程,由 SQL Server 以特定时间间隔自动运行。数据库和事务日志之间的同步点由检查点提供。

使用检查点的优点:

  • 它加快了数据恢复过程。
  • 大多数 dbms 产品会自动检查点。
  • 日志文件中的检查点记录用于防止不必要的重做操作。
  • 由于脏页会在后台不断刷新,因此开销非常低,并且可以频繁完成。

检查点的实时应用:

  • 每当在可能已修改数据库的实时环境中测试应用程序时,都会使用检查点对其进行验证和验证。
  • 检查点用于在数据库中应用任何更新之前创建备份和恢复。
  • 恢复系统用于将数据库恢复到检查点状态。