黑马程序员技术交流社区

标题: 【上海校区】数据库事务 [打印本页]

作者: ~Maybe    时间: 2018-10-31 15:56
标题: 【上海校区】数据库事务
什么是事物?
事物是应用程序一系列的严密操作。所有操作必须全部完成,否则每个操作中所做的更改都会被回滚。
事物的结果有两种
1,操作全部成功。
2,操作只要失败一条,则全部回滚。回滚到事物开始之前。
事物的四大特性

原子性
事物中包含的操作要么都做,要么都不做
一致性
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
隔离性
一个事物的执行不被其他事物干扰,即一个事物内部的操作及使用的数据对其他并发事物是个隔离的,并发执行的各个事物之间不能互相干扰。
持久性
一个事物一旦提交,它对数据库中的数据的改变就应该是永久性的,之后的其他操作或者故障不应该对其执行结果有任何影响。
举个例子
A想要从自己的帐户中转3000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:
从A的帐户中减去3000块钱。如果A的帐户原来有3000块钱,现在就变成0块钱了。
在B的帐户里加3000块钱。如果B的帐户如果原来有0块钱,现在则变成3000块钱了。
如果在A的帐户已经减去了3000块钱的时候,忽然发生了意外,比如停电什么的,导致转帐事务意外终止了,而此时B的帐户里还没有增加3000块钱。那么,我们称这个操作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减3000块的状态,B的帐户的原来的状态。此时A的帐户仍然有3000块,B的帐户仍然有0块。(一致性)
我们把这种要么一起成功(A帐户成功减少3000,同时B帐户成功增加3000),要么一起失败(A帐户回到原来状态,B帐户也回到原来状态)的操作叫原子性操作。
如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性


作者: 不二晨    时间: 2018-11-7 09:25

ヾ(◍°∇°◍)ノ゙
作者: 魔都黑马少年梦    时间: 2018-11-15 16:53





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2