📜  DBMS中的检查点

📅  最后修改于: 2021-08-27 17:33:27             🧑  作者: Mango

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

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

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

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

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

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

了解多个事务中的检查点

  • 恢复系统从末尾到最后一个检查点(即从T4到T1)读取日志。
  • 它将跟踪两个列表-撤消和重做。
  • 每当有一条带有指令或仅的日志时,它将把该事务放入重做列表。 T2和T3包含,而T1仅包含。在此,T1,T2和T3在重做列表中。
  • 每当找到没有提交或中止指令的日志记录时,该事务就会被放入撤消列表<此处,T4具有,但没有,因为它是一个正在进行的事务。 T4将被放入撤消列表。

重做列表中的所有事务都将使用其先前的日志删除,然后在保存其日志之前重做。撤消列表中的所有事务都将被撤消,其日志将被删除。

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

使用检查点的优点:

  • 它加快了数据恢复过程。
  • 大多数dbms产品都会自动检查点本身。
  • 日志文件中的检查点记录用于防止不必要的重做操作。
  • 由于脏页在后台连续被清除,因此开销很低,可以经常执行。

检查点的实时应用:

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