zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

(数据库系统概论|王珊)第十章数据库恢复技术-第一、二节:事务的基本概念和数据库恢复概述

2023-04-18 15:16:46 时间

在这里插入图片描述

一:事务的基本概念

(1)事务

A:定义

事务:是用户定义的一个数据库操作序列。这些操作要么不做,要么全做,是一个不可分割的工作单位。例如在RDBMS中一个事务可以是一条SQL语句或整个程序。事务是数据库恢复和并发控制的基本单位

  • 事务和程序的区别:一般来说,一个程序中包含多个事务

B:事务的定义

事务的定义:事务的开始与结束由用户显式控制。如果用户没有显式地定义事务,则由DBMS按默认规定自动划分事务。在SQL中,定义事务语句有以下三条

  • BEGIN TRANSACTION:表示事务的开始
  • COMMIT:表示事务的正常结束并提交事务的所有操作
  • ROLLBACK:表示事务的结束,但没有正常结束,需要进行回滚(撤销已完成操作,使系统恢复至回滚前状态)

注意不同数据库系统定义语句有所区别

SQL Server

BEGIN TRANSACTION
COMMIT | ROLLBACK

MySQL

START TRANSACTION
COMMIT | ROLLBACK

Oracle

START TRANSACTION NAME
COMMIT | ROLLBACK

(2)事务的四个特性——ACID

A:数据库的ACID

①:原子性(Atomicity)

原子性:事务是数据库的逻辑工作单位,事务中包含的诸多操作要么全做、要么不做。因故障未能做完的,需要有一套机制用于“撤销”那一部分已经做了的

②:一致性(Consistency)

一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态

  • 一致性状态:数据库中只包含成功事务提交的结果
  • 不一致状态:数据库中包含事务未完成时的状态

例如银行转账业务,账户(A)转1万元到账户(B),该事务包含两个操作:首先是(A)减少一万元,其次是(B)增加一万元,这两个操作要么全部做要么全不做,如果只做其中一个就会发生逻辑错误,数据库就处于不一致状态了

③:隔离性(Isolation)

隔离性:一个事务不能被其他事务干扰。也即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰

比如,下列两个并发执行的事务T1和T2,如按表中所示顺序执行,则事务T1的修改被T2覆盖了,即T2干挠了T1。违背了事务的隔离性,是错误的调度

在这里插入图片描述

④:持续性(Durability)

持续性:一个事务一旦提交,它对数据库中数据的改变就是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响

B:破坏ACID的因素

主要有两类

  • 故障:没有执行完;虽然没有完,但是存储介质故障。破坏了ACID中的ACD
  • 并发干扰:多个事务并行运行时,不同事务的操作交叉执行,互相干扰。破坏了ACID中的I

因此这就是DBMS的恢复机制并发控制机制需要解决的问题

  • 本章介绍恢复机制
  • 下一章介绍并发控制机制

二:数据库恢复概述

定义:把数据库从因破坏或故障而导致的错误状态恢复到某个已知的正确状态的技术

目的

  • 保持事务的原子性
  • 保持事务的持久性

实现:由DBMS专门的恢复子系统完成