|
知识路径: > 数据库技术 > 事务管理 > 事务的基本概念 > 事务的基本概念 > 事务的状态 >
|
相关知识点:2个
|
|
|
|
事务是数据库的基本执行单元。事务的执行情况有两种可能:一种情况是事务成功执行,数据库进入一个新的一致状态;另一种情况是事务因为故障或其他原因未能够成功执行,但已经对数据库做了修改。未能成功执行的事务极有可能导致数据库处于不一致状态,这时候就需要对未能成功执行的事务(也称中止事务)造成的变更进行撤销操作(也称回滚ROLLBACK)。如果中止事务造成的变更已经撤销,就称事务已回滚。
|
|
|
成功完成的事务称为已提交事务。对数据库进行更新的已提交的任务使数据库进入一个新的状态,即使出现系统故障,这个状态必须保持。另一方面,成功提交的事务不能通过中止来撤销而造成的影响,必须采用执行一个称为“补偿事务”的方法来撤销。
|
|
|
|
为了更明确地描述事务的执行过程,一般将事务的执行状态分为五种,事务必须处于这五种状态之一。事务各种状态含义说明如下:
|
|
|
(1)活动状态:事务的初始状态,事务执行时处于这个状态。
|
|
|
(2)部分提交状态:当操作序列的最后一条语句自动执行后,事务处于部分提交状态。这时,事务虽然已经完全执行,但由于实际输出可能还临时驻留在内存中,在事务成功完成前仍有可能出现硬件故障,事务仍有可能不得不中止。因此,部分提交状态并不等于事务成功执行。
|
|
|
(3)失败状态:由于硬件或逻辑等错误,使得事务不能继续正常执行,事务就进入了失败状态。处于失败状态的事务必须进行回滚(ROLLBACK)。这样,事务就进入了中止状态。
|
|
|
(4)中止状态:事务回滚并且数据库恢复到事务开始执行前的状态。
|
|
|
(5)提交状态:当事务成功完成后,称事务处于提交状态。只有事务处于提交状态后,才能说事务已经提交。
|
|
|
|
|
|
|
事务状态转换操作命令如下表所示,可以通过在事务中执行相关操作,实现事务状态的转换。
|
|
|
|
|
需要说明的是,事务进入中止状态后,系统一般有如下两种选择:
|
|
|
(1)重启事务。当事务中止的原因是软、硬件错误而不是事务内部逻辑错误时,一般采用重启事务的方法。重启事务可以被看成一个新事务。
|
|
|
(2)杀死事务。这样做通常是因为事务中止的原因是事务内部的逻辑错误,或者是输入错误,也可能是所需数据在数据库中没找到等原因。
|
|
|