数据库中事务的定义
创始人
2024-12-23 22:24:22
0次

  假设用户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中,这几种模式的开启和关闭方式都有着自己不同的命。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...