事务四个特性(ACID):
一、原子性:(博主理解:事务需要提交,不提交修改无效)
事务是数据库的逻辑工作单位,事务中的操作要么都不做,要么都做。
二、一致性:(博主理解:???)
事务执行只有执行结束和没有执行(原子性),这时候数据库就处于符合约束的正确状态。当因为断电等物理原因(隔离性)中断执行时,事务只有一部分执行了,另一部分没有执行。数据库就处在一个不一致的状态。比如:
A要向B支付100元,而A的账户中只有90元,并且我们给定账户余额这一列的约束是,不能小于0.那么很明显这条事务执行会失败,因为90-100=-10,小于我们给定的约束了.
>
这个例子里,支付之前我们数据库里的数据都是符合约束的,但是如果事务执行成功了,我们的数据库数据就破坏约束了,因此事务不能成功,这里我们说事务提供了一致性的保证.然后我们再看个例子:
A要向B支付100元,而A的账户中只有90元,我们的账户余额列没有任何约束.然后支付成功了.
事务的执行结果必须是使数据库从一个正确、符合我们所制定约束的状态到另一个正确、符合我们所制定约束的状态。
三、隔离性(博主理解:我写博客你管不着,你看博客也不耽误我写)
事务之间互不干扰。即一个事务内部操作和其他几个并发执行的事务之间是互相隔离的。
四、持续性(博主理解:博客写了只要成功发出去了,就不会因为电脑没电导致博客没了)
事务一旦提交,事务所做的操作就不会因为断电等其他原因导致结果发生改变。
事务隔离级别(Transaction Isolation Level)。
能定义出这样牛逼的规范真的挺不容易的,其实说白了就四个级别:
1.READ_UNCOMMITTED
2.READ_COMMITTED
3.REPEATABLE_READ
4.SERIALIZABLE
千万不要去翻译,那只是一个代号而已。从上往下,级别越来越高,并发性越来越差,安全性越来越高,反之则反。
归纳一下,以上一共提到了事务的 4 条特性,把它们的英文单词首字母合起来就是:ACID,这个就是传说中的“事务 ACID 特性”!