您当前位置:主页 > 资讯攻略 >
来源:未知
2019-07-08 17:05:53 浏览: 分类:资讯攻略

数据库中日志问题详解

是日志记录的序列。在多事务数据库系统中,每个事务都有几个操作步骤。每个日志记录都记录了一些关于事务已经完成的事情。几个事务的行为是可以“错开”的因此,可能是一个事务的某个步骤被执行并且其效果被记录在日志中,然后另一个事务的某个步骤被执行并且被记录在日志中,然后可能是第一个事务的下一个步骤被跟随,也可能是另一个事务的某个步骤被执行。诸如此类。事务的交错执行使得日志更加复杂,因为仅在事务结束后记录事务的全过程是不够的。

如果系统崩溃,将激活恢复管理器,并检查日志以重建数据库的一致性状态。恢复时,一些事务将被重做,它们写入数据库的新值将被重写一次。其他事务的工作将被取消,数据库将被恢复,就像这些事务从未被执行过一样。

撤消日志是日志的一种,它只执行第二种类型的修复。对于要撤消的事务,因为不确定其对数据库的修改是否已被写入磁盘,所以对事务的所有更新都将被撤消,并且数据库将被恢复到事务之前的状态。

1.航海日志记录

日志只允许以额外的方式写入数据。日志块最初是在主存中创建的,像数据块一样由缓冲区管理。在适当的时候,日志块将从缓冲区写入磁盘。

关于撤销有四种记录:

1):该记录指示交易t的开始

2):交易T已经完成。

3):交易T无法成功执行。

4):事务T改变数据库元素X的值,元素X的原始值为v。

2 .撤消日志规则

为了让撤销日志使我们能够从系统故障中恢复,事务必须遵循两条规则。

1)如果事务t改变了数据库元素x,那么像这样的日志记录必须在x的新值被写入磁盘之前被写入磁盘。

2)如果事务提交,则必须在由该事务改变的所有数据库元素被写入磁盘之后,尽快将其提交日志写入磁盘。

总结一下,撤销日志系统的顺序如下:

1)指出被改变的数据库元素的日志记录。

2)改变的数据库元素本身

3)提交日志记录。

3.应用

对于上面的例子(A向账户B转账50元),如果使用撤销日志系统,相关的工作流程如下表2所示。

我们可以看到命令刷新日志。此命令用于强制将未被擦除的日志记录写入磁盘。在执行第8步之前,在缓冲区中存储了三个撤销记录(、、)。在执行步骤8之后,三个撤销记录被写入磁盘日志文件。当在步骤12中再次执行刷新日志命令时,只有未清洗磁盘的日志记录被写入磁盘。

本文链接:http://www.123down.cn/gonglue/227192.html

下一篇:MySQL timeout解析
攻略资讯
安卓软件