事务的状态和ACID特性

事务就是让数据从一个状态到另一个状态的操作

状态

在这里插入图片描述

活动的

事务在执行过程中

部分提交的

事务的最后一个操作已经完成,此时造成的影响只是在内存里,但还没刷写磁盘

失败的

处于活动的或者部分提交的状态时,服务器宕机

中止的

处于失败的事务,我们要rollback,恢复为之前的状态,此时事务中止
假设你开始一个事务,然后你写了一大堆结果发现有一个地方错了,rollback到最开始,我测,那太难受了。这里可以设置savepoint,不用rollback到事务刚开始的状态。用法如下:
在这里插入图片描述

提交的

部分提交的数据真正从内存刷新到磁盘了

特性

原子性(Atomicity)

原子性是指事务是一个不可分割的工作单位,要么全部提交,要么全部失败回滚。即要么转账成功,要么转账失败,是不存在中间的状态的。如果无法保证原子性会怎么样?就会出现数据不一致的情形, A账户减去100元,而B账户增加100元操作失败,系统将无故丢失100元。

一致性(Consistency)

执行了一个事务后,数据要从一个合法的状态转移到另一个合法状态。什么是合法?这个是由现实世界的意义映射的

  • 举例1: A账户有200元,转账300元出去,此时A账户余额为-100元。你自然就发现了此时数据是不一致的, 为什么呢?因为你定义了一个状态,余额这列必须>= 0。
  • 举例2: A账户200元,转账50元给B账户,A账户的钱扣了,但是B账户因为各种意外,余额并没有增加。你也知道此时数据是不一致的,为什么呢?因为你定义了一个状态,要求A+B的总余额必须不变。
  • 举例3:在数据表中我们将姓名字段设置为唯一性约束 ,这时当事务进行提交或者事务发生回滚的时候,如果数据表中的姓名不唯一-
    ,就破坏了事务的一致性要求。

隔离性(Isolation)

事务之间相互不能干扰,也就是说一个事务内部操作的数据不能被其他并发的事务影响。
T1T2是A先后两次给B转账5块钱,下面状态是我们想要的
在这里插入图片描述
但现实里很可能是这样的,这银行亏死了A扣了5块但B得到十块
在这里插入图片描述

持久性(Durability)

事务一旦提交就不能回撤了,对数据库中数据的影响是永久的。任何故障宕机都不影响。
持久性是通过事务日志来保证的。日志包括了重做日志和回滚日志.当我们通过事务对数据进行修改的时候,首先会将数据库的变化信息记录到重做日志中,然后再对数据库中对应的行进行修改。这样做的好处是,即使数据库系统崩溃,数据库重启后也能找到没有更新到数据库系统中的重做日志,重新执行,从而使事务具有持久性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/225701.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——输入 10 个数,分别统计其中正数、负数、零的个数

#include <stdio.h> int main() {int numbers[10]; // 存储输入的10个数int positive_count 0; // 正数计数器int negative_count 0; // 负数计数器int zero_count 0; // 零计数器// 输入10个数printf("请输入10个数&#xff1a;\n");for (int i 0; i …

vue使用echarts中国地图

需求&#xff1a;Vue3 vite TS 项目内使用 Echarts 5 绘制中国地图。鼠标悬浮省份上面显示指定的数据&#xff0c;地图支持缩放和拖拽的功能&#xff0c;页面放大缩小支持自适应&#xff0c;window.addEventListener(‘resize’, resize); 添加防抖动函数debounce。 一、安装…

Java后端开发——JDBC(万字详解)

Java后端开发——JDBC&#xff08;万字详解&#xff09; 今日目标 掌握JDBC的的CRUD理解JDBC中各个对象的作用掌握Druid的使用 1&#xff0c;JDBC概述 在开发中我们使用的是java语言&#xff0c;那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。 1.1 …

这个校园门禁考勤技术,还怪高级的咧!

随着科技的不断发展&#xff0c;人脸识别技术在各个领域的应用逐渐成为一种趋势。在企业管理中&#xff0c;人脸考勤系统的引入为传统的考勤方式带来了革命性的变革。 传统的考勤方式存在诸多弊端&#xff0c;例如卡片刷卡易被冒用、指纹考勤不够灵活等问题。而基于三维人脸识别…

基于51单片机冰箱温度控制器设计

**单片机设计介绍&#xff0c; 基于51单片机冰箱温度控制器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机冰箱温度控制器设计是一个非常实用的项目。以下是一个基本的介绍&#xff1a; 系统概述&#xff1a; …

城市安全守护者:分析无人机在交通领域的应用

随着科技的进步&#xff0c;无人机在交通领域的应用不断增加&#xff0c;为智慧交通管理提供了新便利。无人机凭借其灵活性&#xff0c;在违章取证、交通事故侦查、交通疏导等方面展现出巨大的应用潜力。无人机在交通领域的应用有哪些&#xff1f;跟着我们一探究竟。 1、违章取…

NAS层协议学习(三)

消息结构 每个NAS消息包含一个协议鉴别符和一个消息标识。协议鉴别符是一个 4 位值&#xff0c;指示正在使用的协议&#xff0c;即对于 EPS NAS 消息是 EMM 或 ESM。消息标识指示发送的特定消息。 EMM 消息还包含一个安全标头&#xff0c;指示消息是否受到完整性保护和/或加密…

​无人机石油管道巡检方案新亮点:灵活准确又高效

在当前石油工业的安全管理中&#xff0c;无人机技术逐渐成为一种不可或缺的工具。随着我国油气管道里程的持续增长&#xff0c;确保这些关键基础设施的安全运行变得越来越重要。传统的巡检方法已经无法满足现代油气行业的需求&#xff0c;而无人机石油管道巡检技术的应用提供了…

Coremail出席2023信息技术应用创新论坛

11月25日&#xff0c;2023信息技术应用创新论坛在常州开幕。江苏省工业和信息化厅副厅长池宇、中国电子工业标准化技术协会理事长胡燕、常州市常务副市长李林等领导出席论坛并致辞。中国工程院院士郑纬民出席并作主题报告。来自产学研用金等各界的千余名代表参加本次论坛。作为…

WebSocket协议在java中的使用

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

功率放大器在超声医疗中的应用有哪些

随着科技的进步和医疗技术的不断发展&#xff0c;功率放大器在超声医疗领域中发挥着重要的作用。超声医疗是一种以超声波作为媒介的医学诊断和治疗技术&#xff0c;具有无创、非放射性和实时性等优势。以下是关于功率放大器在超声医疗中的应用的详细介绍。 一、超声成像&#x…

01 项目架构

关于我 曾经就职于蚂蚁金服&#xff0c;多年的后端开发经验&#xff0c;对微服务、架构这块研究颇深&#xff0c;同时也是一名热衷于技术分享、拥抱开源技术的博主。 个人技术公众号&#xff1a;码猿技术专栏个人博客&#xff1a;www.java-family.cn 前期一直在更新《Spring…