这篇文章主要介绍“数据库中事务的定义”,在日常操作中,相信很多人在数据库中事务的定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库中事务的定义”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
专注于为中小企业提供成都做网站、网站制作、成都外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业港闸免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
假设用户A要从他的账户里面给B转账1000元,那么就需要两步来实现,首先从A的账号减去1000元,再给B账号加1000元。这两个步骤中,任何一步都不能少或者出错,这两步要么都得到成功操作完成,要么什么都不做,中途出错也要回滚到转账开始之前的状态。这样的一个过程就是我们经常说的事务。根据这个例子,下来我们就给事务定义如下:
事务的定义
事务(transaction)是为了保证数据的一致性和完整性,由一系列数据操作或指令组成的一个不可分割的逻辑单元,这些操作或指令要么全都得到执行,要么全都不执行。如果事务成功执行,则该事务中对所有数据所做的更改均会成为数据库中持久性更改;如果事务执行过程中遇到错误,则所有执行的操作和更改均应得到取消,回滚到事务执行前的状态。从定义看,事务应该满足四个属性,即ACID,也就是原子性、一致性、隔离性、持久性。
原子性(Atomicity,或称不可分割性):事务中的所有操作,要么全部都成功执行,要么全部都没有执行完成。这种不可中断的一系列操作就是原子性。转账过程中,A账号减去1000元和B账号加1000元,必须都得到执行,或者都不执行,否则都不符合逻辑和实际情况。
一致性(Consistency):事务开始之前和事务完成以后,所有相关的数据状态都会保持一致,不会使数据库的完整性得到破坏。原子性会确保数据保持一致性,转账过程产生中断,第一步执行了,第二步没有执行,这个时候,只是A账号少了1000元,而B账号没有加1000元,这个时候,数据就不一致了。
隔离性(Isolation,又称独立性):数据库中多个并发事务同时执行时,一个事务的执行不能受到其他事务的干扰,也就是说,一个事务内的操作和使用的数据对其他事务是隔离的,不会受到其他并发的事务影响。例如:事务查看数据所处的状态,要么是另一个并发事务的修改之前的状态,要么就是另一个事务修改之后的状态,不会是中间状态的数据。
持久性(Durability):事务执行完后,对数据的修改就是永久的,即便系统出现故障,不会产生回滚,也不会影响到执行结果。
事务的运行模式
通常,事务以3种模式运行,他们分别是:自动提交事务、显式事务和隐式事务。
1.自动提交事务
每一条单独的SQL语句都在其执行完成后进行自动提交事务,即执行SQL语句后就会马上自动隐式执行COMMIT操作。如果出现错误,则进行事务回滚至之前状态。
2.显式事务
通过指定事务开始语句来显式开启事务来作为开始,并由以提交命令或者回滚命令来提交或者回滚事务作为结束的一段代码就是一个用户定义的显式事务。
3.隐式事务
在隐式事务中,无需使用BEGINTRANASACTION来开启事务,每个SQL语句第一次执行就会开启一个事务,直到用COMMIT[TRANSACTION]来提交或者ROLLBACK[TRANSACTION]来回滚结束事务。
在ORACLE、MySQL和SQLSERVER中,这几种模式的开启和关闭方式都有着自己不同的命。
到此,关于“数据库中事务的定义”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
网站栏目:数据库中事务的定义
网页链接:http://scgulin.cn/article/ppcigh.html