为什么我们需要检查点?
每当在实时环境中创建事务日志时,它都会占用大量存储空间。同样,跟踪每个更新及其维护可能会增加系统的物理空间。最终,随着大小的增长,可能无法处理事务日志文件。这可以通过检查点解决。用于删除所有先前的事务日志并将其存储在永久存储中的方法称为Checkpoint 。
什么是检查站?
该检查点用于声明一个点,在该点之前,DBMS处于一致状态,并且所有事务都已提交。在事务执行期间,将跟踪此类检查点。执行后,将创建事务日志文件。
到达保存点/检查点后,通过将其更新保存到数据库中来销毁日志文件。然后,使用事务的即将执行的操作创建一个新日志,该日志将被更新,直到下一个检查点为止,并且该过程继续进行。
如何在数据库中使用检查点?
脚步 :
- 将begin_checkpoint记录写入日志。
- 在稳定的存储中收集检查点数据。
- 将end_checkpoint记录写入日志。
系统崩溃并在执行并发事务时恢复时的行为如下所示–
![](https://mangdo-1254073825.cos.ap-chengdu.myqcloud.com//front_eng_imgs/geeksforgeeks2021/Checkpoints%20in%20DBMS_0.jpg)
了解多个事务中的检查点
- 恢复系统从末尾到最后一个检查点(即从T4到T1)读取日志。
- 它将跟踪两个列表-撤消和重做。
- 每当有一条带有指令
和 或仅 的日志时,它将把该事务放入重做列表。 T2和T3包含 和 ,而T1仅包含 。在此,T1,T2和T3在重做列表中。 - 每当找到没有提交或中止指令的日志记录时,该事务就会被放入撤消列表<此处,T4具有
,但没有 ,因为它是一个正在进行的事务。 T4将被放入撤消列表。
重做列表中的所有事务都将使用其先前的日志删除,然后在保存其日志之前重做。撤消列表中的所有事务都将被撤消,其日志将被删除。
检查点的相关性:
检查点是一项功能,它在符合RDBMS的ACID中添加C值。如果数据库意外关闭,则使用检查点进行恢复。检查点以一定间隔工作,并将日志中的所有脏页(修改后的页)从中继转发到数据文件,即从缓冲区到物理磁盘。这也称为对脏页的强化。它是一个专用过程,由SQL Server在特定时间间隔自动运行。数据库和事务日志之间的同步点带有检查点。
使用检查点的优点:
- 它加快了数据恢复过程。
- 大多数dbms产品都会自动检查点本身。
- 日志文件中的检查点记录用于防止不必要的重做操作。
- 由于脏页在后台连续被清除,因此开销很低,可以经常执行。
检查点的实时应用:
- 每当在可能已修改数据库的实时环境中测试应用程序时,都会使用检查点对其进行验证和确认。
- 在应用数据库中的任何更新之前,检查点用于创建备份和恢复。
- 恢复系统用于将数据库返回到检查点状态。