acid四大特性是什么?

acid四大特性是什么?,第1张

1、Atomicity(原子性):一个事务(transaction)中的所有 *** 作,要么全部完成,要么全部不完成,不会结束在中间某个环节。

事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

2、Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

3、Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

4、Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

扩展资料:

实施

处理事务通常需要一系列 *** 作,由于多种原因,这些 *** 作容易失败。例如,系统可能在其磁盘驱动器上没有剩余空间,或者它可能已经用完了分配的CPU时间。

有两种流行的技术家族:预写日志记录和影子分页。在这两种情况下,都必须对所有要更新的信息以及隔离级别(可能还取决于可能读取的所有数据)获取锁。在预写日志记录中,通过在更改数据库之前将原始(未更改)数据复制到日志中来保证持久性。

这样可以使数据库在发生崩溃的情况下返回到一致的状态。在阴影中,更新将应用于数据库的部分副本,并且在事务提交时激活新副本。

参考资料:百度百科-acid

ACID 是为保证事务(transaction)是正确可靠的,所必须具备的四个特性:

以 A 给 B 转账100元为例:

MySQL事务是由 InnoDB 存储引擎实现的。

可以用如下的命令显式的开启事务:

另外,在自动提交(autocommit)模式下,我们执行的每一条 SQL 语句都是一条独立的事务;如果关闭了自动提交(autocommit)模式,则所有的 SQL 语句都在一个事务中,直到执行了 commit 或 rollback,该事务结束,同时开始了另外一个事务。

MySQL 事务的 ACID 特性靠如下机制实现:

Go 语言的 Gorm 提供了对于事务 *** 作的支持:

此外,还有嵌套事务以及手动事务等 *** 作,可以参考中文文档: learnku.com/docs/gorm/v…

@Transactional 注解必须添加在public方法上,private、protected方法上是无效的。

一般情况下,推荐将@Transactional 注解加在方法上,因为@Transactional直接加在类或者接口上,@Transactional注解会对类或者接口里面所有的public方法都有效,会影响性能。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/6064902.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存