【MySQL 事务】详细介绍+实例

1.数据库事务

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或 撤销操作请求,即这些操作要么同时成功,要么同时失败。

2.单个逻辑单元

在数据库事务的上下文中,单个逻辑单元表示在事务中的一系列操作,它们是一个完整的功能,必须作为一个 整体来执行,如果其中任何一个操作失败,整个事务都会回滚,确保数据的完整性和一致性。

3.事务的概念

事务(transaction) 是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务 成功,即使只有一个操作失败, 事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他 数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

4.事务的四大特性

原子性(Atomicity):事务是不可分割的最小操作单元,要么同时成功,要么同时失败。

一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。

隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

5.对四种特性的理解+举例说明

原子性(Atomicity):事务是不可分割的最小操作单元,要么同时成功,要么同时失败。

事务:从账户A转账100元到账户B。

操作: 从账户A扣除100元。 向账户B增加100元。

如果第二步失败(例如账户B不存在),则第一步也会回滚,账户A的余额不会减少。

一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。

转账前:账户A余额1000元,账户B余额500元,总余额1500元。

转账后:账户A余额900元,账户B余额600元,总余额仍为1500元。

如果转账过程中总余额发生变化(例如账户A扣款但账户B未到账),则数据库会回滚事务以保持一致性。

隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

事务1:从账户A转账100元到账户B。

事务2:从账户A转账200元到账户C。

如果没有隔离性,事务2可能会读取事务1未提交的数据,导致脏读或丢失更新。

持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

事务提交后,账户A的余额减少100元,账户B的余额增加100元。

即使数据库服务器在提交后立即崩溃,重启后账户A和账户B的余额仍然会反映转账结果。

相关推荐
PyHaVolask10 小时前
SQL注入漏洞原理
数据库·sql
ptc学习者10 小时前
黑格尔时代后崩解的辩证法
数据库
代码游侠10 小时前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
!chen10 小时前
EF Core自定义映射PostgreSQL原生函数
数据库·postgresql
霖霖总总11 小时前
[小技巧14]MySQL 8.0 系统变量设置全解析:SET GLOBAL、SET PERSIST 与 SET PERSIST_ONLY 的区别与应用
数据库·mysql
马克学长11 小时前
SSM校园食堂订餐系统531p9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·ssm 校园食堂订餐系统
alonewolf_9911 小时前
深入剖析MySQL索引底层:B+树、联合索引与跳跃扫描原理全解
数据库·b树·mysql
oMcLin11 小时前
如何在 AlmaLinux 9 上配置并优化 Redis 集群,支持高并发的实时数据缓存与快速查询?
数据库·redis·缓存
oMcLin11 小时前
如何在Debian 11上通过配置MySQL 8.0的分布式架构,提升跨区域数据同步的效率与延迟?
分布式·mysql·debian
洛阳纸贵11 小时前
Redis
数据库·redis·缓存