数据库的事务管理及特征

简介: 可能很多小伙伴都会好奇事务管理是什么?

事务管理
事务是由N步数据库操作序列组成的逻辑执行单元,组成这组操作的各个单元要么全部成功,要么全部失败。即一组sql语句中哪怕有一条失败也会失败

举个例子:转账操作,一个账户减少钱,一个账户增加钱

默认情况下,MySQL的事务是自动提交的,也就是执行了增删改查操作之后,数据直接持久化到磁盘上,不能撤销

但是如果改为手动事务之后,更新过的数据,在没有使用commit提交时,可以通过rollback进行撤回

数据库事务的原理
start transaction / begin:开始事务

rollback:回滚事务

commit:提交事务

什么是数据库事务?
从开启到提交为一个事务

一个事务对应一组业务,一个事务中间可以有一条sql语句或者多条sql语句

当一个业务开始之前开启事务,当一个业务结束之后提交事务

例如刚刚转账案例:我们的需求是让一个账户减少钱的同时让另一个账户增加钱——可以写成一个事务

事务的特征:

原子性:

事务开始后,所有的操作要么全部做完,要么全部不做,不可能滞留在中间环节。

事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。

一致性:

事务开始前和结束后,数据库的数据完整性约束没有被破坏,事务前后操作数据是一致的,可以理解为能量守恒

例如:A向B转账,不可能A扣了钱,B却没有收到

隔离性:

一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰

例如:A正在从一张银行卡取钱,在A取钱的过程结束前,B不能向这张卡转账

注意:

两个事务之间是有隔离级别的,隔离级别的不同会导致出现不同的问题。

脏读 幻读 不可重复读

持久性:

指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,并不会被回滚。接下来的其他操作或故障就不应该对其有影响。即使服务器系统崩溃或服务器宕机等故障。只要数据库重新启动,那么一定能够将其恢复到事务成功结束后的状态。

目录
相关文章
|
14天前
|
消息中间件 数据库 云计算
微服务架构下的数据库事务管理策略####
在微服务架构中,传统的单体应用被拆分为多个独立的服务单元,每个服务维护自己的数据库实例。这种设计提高了系统的可扩展性和灵活性,但同时也带来了分布式环境下事务管理的复杂性。本文探讨了微服务架构下数据库事务的挑战,并深入分析了几种主流的事务管理策略,包括Saga模式、两阶段提交(2PC)以及基于消息的最终一致性方案,旨在为开发者提供一套适应不同业务场景的事务处理框架。 ####
|
4月前
|
分布式计算 数据库
现代数据库系统的并发控制与事务管理
数据库系统的并发控制与事务管理是保障数据一致性和并发访问效率的核心技术。本文深入探讨了现代数据库系统中常见的并发控制方法和事务管理机制,包括乐观并发控制和悲观并发控制,以及ACID特性的实现和应用。通过对比分析不同方法的优缺点,展示了在不同应用场景下如何选择合适的并发控制策略和事务管理方式,以达到最优的数据库性能和数据一致性。
|
6月前
|
关系型数据库 MySQL 数据库
【MySQL】:数据库事务管理
【MySQL】:数据库事务管理
107 0
|
6月前
|
关系型数据库 API 数据库
Django中的数据库事务管理:确保数据一致性
【4月更文挑战第15天】Django框架提供强大的数据库事务管理,确保ACID属性,保证数据一致性和完整性。文章深入讨论了Django事务管理,包括使用`@transaction.atomic`装饰器和`transaction.atomic()`上下文管理器手动控制事务,以及低级API进行精细管理。注意避免长时间事务、选择合适隔离级别、正确处理异常及了解数据库特性。掌握这些技巧对构建可靠Web应用至关重要。
|
6月前
|
SQL NoSQL 数据库
深入浅出:微服务架构下的数据库事务管理
【2月更文挑战第12天】 在当今微服务架构日益流行的背景下,如何有效地管理跨服务的数据库事务成为了开发与维护中的一大挑战。本文旨在探讨微服务环境下数据库事务管理的关键技术和策略,包括但不限于分布式事务的基本概念、常见的解决方案(如两阶段提交、补偿事务等),以及这些方案在实际应用中的优缺点比较。通过深入浅出的方式,本文希望能够帮助读者更好地理解并应对微服务架构下的数据库事务管理问题,进而提升系统的稳定性和可靠性。
154 4
|
6月前
|
SQL 存储 安全
【软件设计师备考 专题 】数据库管理系统的功能和特征
【软件设计师备考 专题 】数据库管理系统的功能和特征
148 0
|
6月前
|
SQL 安全 关系型数据库
数据库第十三次作业 事务管理
数据库第十三次作业 事务管理
83 6
|
XML Java Go
Spring事务管理: 构建稳健的数据库事务处理
Spring事务管理: 构建稳健的数据库事务处理
64 0
|
关系型数据库 MySQL 数据库
MySQL 数据库事务四大特征(ACID)
MySQL 数据库事务四大特征(ACID)
97 0
|
XML Oracle Java
第九篇 Spring数据库事务管理
第九篇 Spring数据库事务管理
109 0