数据库事务(Database Transaction)概述

事务概念数据库

事务能够用不少不少不一样的方式去定义。事务是数据库操做执行的一个逻辑工做单元,是用户定义的一个数据库操做序列,这些操做要么全作要么全不作,是一个不可分割的工做单位。例如, 在关系数据库中, 一个事务能够是一条SQL语句、一组SQL语句或整个程序。事务和程序是两个概念。通常地讲, 一个程序中包含多个事务。事务的开始与结束能够由用户显式控制。若是用户没有显式地定义事务, 则由DBMS按缺省规定自动划分事务。并发

 

事务特性生命周期

在数据库系统中,一个事务是指由一系列数据库操做组成的一个完整的逻辑过程。例如银行转账,从原帐户扣除金额,以及向目标帐户添加金额,这两个数据库操做的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具备ACID特性。事务

  • 原子性(Atomicity):一个事务(transaction)中的全部操做,要么所有完成,要么所有不完成,不会结束在中间某个环节。事务在执行过程当中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务历来没有执行过同样。
  • 一致性(Consistency):在事务开始以前和事务结束之后,数据库的完整性没有被破坏。这表示写入的资料必须彻底符合全部的预设规则,这包含资料的精确度、串联性以及后续数据库能够自发性地完成预约的工做。
  • 隔离性(Isolation):当两个或者多个事务并发访问(此处访问指查询和修改的操做)数据库的同一数据时所表现出的相互关系。事务隔离分为不一样级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
  • 持久性(Durability):在事务完成之后,该事务对数据库所做的更改便持久地保存在数据库之中,而且是彻底的。

 

事务目的ci

事务在数据库系统中主要有两个目的:it

1.提供一个可靠的工做单元,可以从失败中恢复到正确的状态。若是发生系统错误,执行操做语句中断(所有中断或部分中断)或者是许多操做没有完成或不知道其状态下,依旧保持数据库正常运行。io

2.在程序访问数据库之间提供一个隔离。若是不提供这种隔离,程序可能返回不许确的结果。table

 

事务类型程序

  • 自动提交的事务 -- 每个单独的语句都是一个事务
  • 显示声明的事务 -- 明显的以BEGIN TRAN开始,而且以ROLLBACK TRAN或者是COMMIT TRAN结尾的语句。
  • 隐含事务 -- SQL Server会在当前事务被提交或回滚后自动启动一个新的事务,这个新事务直到用户执行COMMIT或ROLLBACK为止, 这时系统又会启动一个新事务。这样就造成了一个连续的事务链。

 

经常使用的事务操做数据

  • BEGIN TRANSACTION – 开始事务,事务开始保存点
  • ROLLBACK TRANSACTION – 回滚事务,因为出现错误,回滚数据到事务开始以前
  • COMMIT TRANSACTION – 提交事务,保存数据到数据库中

 

完整的事务生命周期

1.事务开始

2.执行数据库操做语句(一个或多个)

3.若是没有错误发生,提交事务而且事务结束

4.若是出现了错误,回滚到事务开始以前而且事务结束

相关文章
相关标签/搜索