共计 1464 个字符,预计需要花费 4 分钟才能阅读完成。
这篇文章主要介绍“数据库中事务的定义”,在日常操作中,相信很多人在数据库中事务的定义问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库中事务的定义”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
假设用户 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 中,这几种模式的开启和关闭方式都有着自己不同的命。
到此,关于“数据库中事务的定义”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!