一:事物的基本概念
(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
A
A转1万元到账户
B
B
B,该事物包含两个操作:首先是
A
A
A减少一万元,其次是
B
B
B增加一万元,这两个操作要么全部做要么全不做,如果只做其中一个就会发生逻辑错误,数据库就处于不一致状态了
③:隔离性(Isolation)
隔离性:一个事物不能被其他事物干扰。也即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰
比如,下列两个并发执行的事务T1和T2,如按表中所示顺序执行,则事务T1的修改被T2覆盖了,即T2干挠了T1。违背了事务的隔离性,是错误的调度
④:持续性(Durability)
持续性:一个事物一旦提交,它对数据库中数据的改变就是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响
B:破坏ACID的因素
主要有两类
- 故障:没有执行完;虽然没有完,但是存储介质故障。破坏了ACID中的ACD
- 并发干扰:多个事物并行运行时,不同事物的操作交叉执行,互相干扰。破坏了ACID中的I
因此这就是DBMS的恢复机制和并发控制机制需要解决的问题
二:数据库恢复概述
定义:把数据库从因破坏或故障而导致的错误状态恢复到某个已知的正确状态的技术
目的:
实现:由DBMS专门的恢复子系统完成
|