怎样评价一个网站做的好与不好,营销公关名词解释,新产品推广,上海网站建设q479185700強一、引言
利用前面所建立的冗余数据#xff0c;即日志和数据库备份#xff0c;要将数据库从一个不一致的错误状态恢复到一个一致性状态#xff0c;还需要相关的恢复策略#xff0c;不同DBMS的事务处理机制所采用的缓冲区管理策略可能不同#xff0c;发生故障后的数据库不…一、引言
利用前面所建立的冗余数据即日志和数据库备份要将数据库从一个不一致的错误状态恢复到一个一致性状态还需要相关的恢复策略不同DBMS的事务处理机制所采用的缓冲区管理策略可能不同发生故障后的数据库不一致错误和状态也会不同恢复技术和恢复策略的具体实现也会有所不同假设恢复机制仍采用我们前面讨论的窃取但不强制的缓冲区管理策略那么当数据库系统发生故障后就可能会出现
不一致错误
夭折的事务的部分执行结果已对数据库进行了更新破坏了事务的原子性已提交的事务对数据库的更新结果不能保存在磁盘上破坏了事务的持久性导致数据库处于不一致错误状态
恢复机制要做的就是利用日志来撤销夭折事务来保持事务的原子性重做已提交事务来保持事务的持久性再利用转储的数据库备份采用一定的恢复策略或算法来将数据库恢复到发生故障前的某个一致性状态
二、撤销事务UNDO
对于夭折事务的部分执行结果已对数据库进行了更新这种不一致错误为保持事务的原子性应撤销该事务所产生的更新即对该事务进行UNDO操作
对于从账户A转账1000元到账户B的转账事务转账前A的账户余额为1500元账户B的余额为0事务在执行完对账户A的更新后可能会因故障导致事务不能继续执行但对账户A的更新结果却已写到磁盘中去了即账户A的值已被改为500元但账户B的值仍为0元。 或者事务在执行完对账户B的更新后也可能会因故障导致事务不能提交而对账户A和账户B的更新结果却都已写入磁盘中去了即账户A的值已改为500元账户B的值已为1000元 以上更新操作相应的更新日志记录已先写入磁盘的日志中
对于该夭折事务事务的原子性要求夭折事务必须回滚相当于事务没有执行这里事务的强制回滚就是要对事务进行撤销操作即UNDO操作
恢复机制对事务进行的UNDO操作就是利用日志撤销此事务已对数据库进行的更新将更新前的旧值重新写会磁盘的数据库中使得该事务好像根本没有执行一样保持了事务的原子性使得事务以ROLLBACK方式结束
对于银行转账事务UNDO操作就是根据系统产生的日志记录将事务对账户A和账户B更新前的值重新写回到磁盘中去即账户A的值改回为1500元账户B的值改回为0元 三、重做事务REDO
而对于已提交的事务对数据库的更新结果尚未写回到磁盘上的数据库中这种不一致错误为保持事务的持久性应重做该事务所产生的更新即对该事务进行REDO操作
对于从账户A转账1000元到账户B的转账事务事务在执行完对账户A和账户B的更新后进行了提交操作但事务提交后事务对数据库的更新结果还没有及时地写到磁盘的数据库中还在内存的数据库缓冲区里若此时系统发生故障会使缓冲区中数据丢失 。对于该提交事务事务的持久性要求事务对数据库的更新应持久地保存在数据库中恢复机制要对该事务进行REDO操作就是利用日志重新执行此事务已对数据库进行的更新将更新后的新值写入磁盘的数据库中保持该事务的持久性使得事务以COMMIT方式结束 对于银行转账事务REDO操作就是根据系统产生的日志记录将事务对账户A和账户B的更新后的值写到磁盘中去即账户A的值改为500元账户B的值改为1000元