当前位置: 首页 > ops >正文

事务基础概念

事务

事务是什么?

事务是一种机制,一个操作序列,包含了一组数据库操作命令,并且把所有命令作为一个整体一起向系统提交或者撤销操作请求,即统一这组命令要么一起执行,要么一起不执行

简短概况就是:事务即是一组命令序列,他们要么一起执行;要么一起不执行;从而保证了数据的完整性和统一性。

事务的特性

acid特性:原子性,一致性,隔离性,持久性

原子性atomicity

事务是一个不可分割的整体,事务中的所有操作要么一起执行,要么一起不执行。而事务中只要有一个操作不成功,那么整个事务都将会被回滚。 ​ 案例:a向b转账1000元,当只执行了扣款语句时断电了,a账号发生了扣款,b账号却没有收到打款。此时事务的原子性就会来保证事务要么都执行,要么都不执行了。 ​

一致性cinsustency

事务开始前和事务执行结束后,数据库的完整性约束没有被破坏。
即事务开始前,数据库的数据处于一致状态;事务完成时,数据也必须处于一致状态。当事务运行时,数据可能会处于不一致的状态,但当事务完成时,数据必须回到一致状态。

案例:
对银行转账事务,不管事务成功与否,都应该再事务结束后保持前后二者存款总额与事务执行前一致

当多个用户对同一个表进行操作时,可能会出现以下一致性问题:
1脏读
a修改了这条数据但未提交后,此时b却可以看到a这条未提交的修改记录。--脏读

2不可重复读
a在一个事务c内,反复读取同一个数据时。在这个事务还没有结束时,b在另一个事务d中也访问了这个数据。那么,再第一个事务c中读到数次的数据,可能由于第二个事务d的修改,导致第一个事务c读到的数据前后不一致。--不可重复读

3幻读
一个事务对表中的所有数据进行了修改;同时,另一个事务向这个表添加了数据,操作第一个事务的用户会发现:表中还有一行数据没有被修改,像中了幻觉一样。--幻读

4丢失更新
两个事务同时读取同一条记录,a先修改记录,b也修改记录;当b提交后,那么a修改的结果会被b修改的结果覆盖。--丢失更新

隔离性

隔离性确保并发执行事务的状态保存与顺序执行事务时的状态相同

持久性

事务完成后,该事务对数据库所做的更改会持久的保存在数据库中,并且不会被回滚;
即不够系统是否发生故障,事务处理的结果都是永久的。一旦事务被提交,那么事务的效果将会永久的保存在数据库中。

总结

事务管理中,原子性是基础,隔离性是手段,一致性是目的,持久性是结果。

http://www.xdnf.cn/news/8543.html

相关文章:

  • 抽象类、普通类和接口的区别详细讲解(面试题)
  • Maven 中央仓库操作指南
  • Baklib构建企业CMS高效协作与安全管控体系
  • 开源视频监控前端界面MotionEye
  • Java基础 Day19
  • python web开发-Flask模板引擎Jinja2完全指南
  • AI扫描王APP:高效便捷的手机扫描工具,让生活更智能
  • yum命令常用选项
  • redis使用RDB文件恢复数据
  • 计算机网络学习20250524
  • vs2022 Qt Visual Studio Tools插件设置
  • WPF按钮Radius化
  • DAY01:【ML 第二弹】高等数学
  • Java 函数式接口(Functional Interface)
  • Disruptor—2.并发编程相关简介
  • HarmonyOS实战:高德地图定位功能完整流程详解
  • 《Spark/Flink/Doris离线实时数仓开发》目录
  • Linux目录介绍+Redis部署(小白篇)
  • 基于大模型的髋关节骨关节炎预测与治疗方案研究报告
  • client.chat.completions.create方法参数详解
  • 指令集架构、微架构、厂商对应关系
  • 浏览器强缓存还未过期,但服务器资源已经变了怎么办?
  • 打破产品思维--启示录:打造用户喜欢的产品--实战6
  • 动静态库--
  • 软件开发MVC三层架构杂谈
  • Android-OkHttp与Retrofit学习总结
  • 【疑难杂症】Vue前端下载文件无法打开 已解决
  • WebAssembly:开启跨平台高性能编程的新时代
  • 游戏引擎学习第309天:用于重叠检测的网格划分
  • 后端开发概念