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

事务的总结

数据库事务

数据库事务是一个被视为单一的工作单元的操作序列。这些操作应该要么完整地执行,要么完全不执行。事务管理是一个重要组成部分,RDBMS 面向企业应用程序,以确保数据完整性和一致性。事务的概念可以描述为具有以下四个关键属性描述为 ACID:

  • 原子性 Atomicity:事务应该当作一个单独单元的操作,这意味着整个序列操作要么是成功,要么是失败的。

  • 一致性 Consistency:这表示数据库的状态必须从一个一致性状态转换到另一个一致性状态

  • 隔离性 Isolation:可能同时处理很多有相同的数据集的事务,每个事务应该与其他事务隔离,以防止数据损坏。考虑到并发性需求,所以隔离是有对应的隔离等级设置(在并发性和数据安全性之间进行平衡)

  • 持久性 Durability:一个事务一旦完成全部操作后,这个事务的结果必须是永久性的,不能因系统故障而从数据库中删除。

多事务并发的问题

在实际项目开发中数据库操作一般都是并发执行的,即有多个事务并发执行,并发执行就可能遇到问题,目前常见的问题如下:

  • 丢失更新:两个事务同时更新一行数据,最后一个事务的更新会覆盖掉第一个事务的更新,从而导致第一个事务更新的数据丢失,这是由于没有加锁造成的;

  • 脏读:一个事务看到了另一个事务未提交的更新数据;

  • 不可重复读:在同一事务中,多次读取同一数据却返回不同的结果;也就是有其他事务更改了这些数据;

  • 幻读:一个事务在执行过程中读取到了另一个事务已提交的插入数据;即在第一个事务开始时读取到一批数据,但此后另一个事务又插入了新数据并提交,此时第一个事务又读取这批数据但发现多了一条,即好像发生幻觉一样。

1、第一类丢失更新(两个事务同时更新,因为其中一个事务的回滚,将另一事务已提交的数据丢失),因为两个事务都去做写操作,然后其中一个事务回滚,导致另一事务已提交的数据丢失

在这里插入图片描述

2、脏读(两个事务,其中一事务读另一事务修改后,回滚前的记录),因为读还没有提交事务的数据,当其事务回滚后,读的数据是以前的临时数据
在这里插入图片描述

http://www.lryc.cn/news/149494.html

相关文章:

  • [ROS]yolov5-7.0部署ROS
  • Java抽象方法、抽象类和接口——第七讲
  • kafka集群之kraft模式
  • 虹科案例 | 缆索挖掘机维护—小传感器,大作用!
  • Windows安装FFmpeg说明
  • 电子电路原理题目整理(1)
  • iPhone 15预售:获取关键信息
  • Kind创建本地环境安装Ingress
  • MySQL与Oracle数据库通过系统命令导出导入
  • 从零学算法(剑指 Offer 36)
  • 【Unity3D】UI Toolkit容器
  • 手把手教你写出第一个C语言程序
  • flink维度表关联
  • Docker Compose 安装使用 教程
  • 睿趣科技:开抖音小店挣钱吗到底
  • 国际腾讯云账号云服务器网络访问丢包问题解决办法!!
  • Deepnote:为什么我停止使用 Jupyter Notebook
  • 山西省文物局与大势智慧签订战略合作协议
  • Java设计模式:一、六大设计原则-02:开闭原则
  • DETRs Beat YOLOs on Real-time Object Detection
  • 【数据分享】1901-2022年1km分辨率的逐月降水栅格数据(免费获取/全国/分省)
  • 全网首发!奔驰宝马奥迪卡带机卡带通道激活模块,无损安装可以接2路AUX
  • 反弹shell总结
  • [机缘参悟-103] :IT人关于接纳的思考与感悟
  • 甄知携AIGC新升级产品参与首届人工智能生成内容国际会议,共探AIGC最前沿技术
  • 4.9 已建立连接的TCP,收到SYN会发生什么?
  • leetcode 365 水壶问题
  • django/CVE-2017-12794XSS漏洞复现
  • 【学习笔记】计算机视觉对比学习综述
  • 【Linux】fork函数的基础知识