关系型数据库事务的ACID特性与实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关系型数据库事务的ACID特性与实现相关的知识,希望对你有一定的参考价值。

参考技术A

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方法都有效,会影响性能。

以上是关于关系型数据库事务的ACID特性与实现的主要内容,如果未能解决你的问题,请参考以下文章

深入学习MySQL事务:ACID特性的实现原理

深入学习MySQL事务:ACID特性的实现原理

深入学习MySQL事务:ACID特性的实现原理

PostgreSQL中的ACID特性介绍

spring事务源码解析

关系型数据库事务ACID特性概述