MySQL事务(简单明了)

目录

1. 事务的特性(ACID):

2. 事务的语法:

3. 隔离级别:

4. 保存点(Savepoints):

5. 示例:


 

1. 事务的特性(ACID):

  • 原子性(Atomicity): 这确保了在事务执行期间发生故障或错误的情况下,系统不会保留任何不一致的状态。MySQL使用日志文件(Redo Log和Undo Log)来实现原子性。

  • 一致性(Consistency): 一致性确保了事务执行后,数据库从一个一致的状态变为另一个一致的状态。数据库的完整性约束在这个阶段得到维护,如果约束被破坏,整个事务将回滚。

  • 隔离性(Isolation): 隔离性描述了一个事务对其他事务的影响程度。MySQL提供多个隔离级别,以便开发人员可以根据需要进行权衡。更高的隔离级别通常伴随着更大的性能开销。

  • 持久性(Durability): 当事务提交时,它的影响应该是永久性的。MySQL通过将事务的日志持久保存在磁盘上来实现持久性,即使数据库系统崩溃,也可以通过日志文件进行恢复。

2. 事务的语法:

  • START TRANSACTION;:开始一个新的事务。

  • COMMIT;:提交事务。如果所有语句成功执行,将保存更改。

  • ROLLBACK;:回滚事务。如果出现错误或其他问题,将撤消所有更改。

3. 隔离级别:

  • READ UNCOMMITTED:允许读取未提交的数据。这是最低的隔离级别,可能导致脏读(读到其他事务未提交的数据)。

  • READ COMMITTED:只能读取已提交的数据,避免了脏读。这是MySQL的默认隔离级别。

  • REPEATABLE READ:确保在同一事务中多次读取相同记录时,结果始终一致。避免了脏读和不可重复读(同一事务内两次查询返回不同的结果)。

  • SERIALIZABLE:最高的隔离级别,确保事务之间完全隔离。避免了脏读、不可重复读和幻读(读取到其他事务插入的数据)。

4. 保存点(Savepoints):

  • 保存点是事务中的命名点,可以通过 SAVEPOINT 创建。它允许在事务中的特定位置设置一个标记,以便在需要时回滚到该位置。

  • 使用 ROLLBACK TO SAVEPOINT 可以回滚到指定的保存点,而不是整个事务。

5. 示例:

-- 开始事务
START TRANSACTION;-- 执行一系列SQL语句-- 提交事务
COMMIT;-- 或者回滚事务
ROLLBACK;

在此示例中,可以插入、更新或删除多个记录,但只有在执行 COMMIT 时所有操作都成功时,更改才会生效。如果在事务执行过程中发生错误,可以执行 ROLLBACK 来撤销所有更改,确保数据库的一致性。 

 

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

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

相关文章

WebUI自动化学习(Selenium+Python+Pytest框架)003

1.元素操作 在成功定位到元素之后,我们需要对元素进行一些操作动作。常用的元素操作动作有: (1)send_keys() 键盘动作:向浏览器发送一个内容,通常用于输入框输入内容或向浏览器发送快捷键 (2…

JAVA的反射机制

什么是反射机制 Java反射机制是指在运行时动态地获取类的信息并操作类的成员(属性、方法、构造方法等)的能力。通过反射,我们可以解析出类的完整信息,包括构造函数、成员变量、继承关系等。以下是一个使用反射机制创建对象、调用…

【数据结构】排序效率最优解之一:二叉树-堆

Hello everybody!今天打算给大家介绍一个功能比较强大的数据结构的基础,它不仅具有很高的应用价值而且排序效率很高。冒泡排序都知道叭,它的时间复杂度为O(n^2),而堆排序的时间复杂度为O(n*logn)。堆排序直接碾压冒泡排序。在c语言阶段&#…

ES6之原始数据类型Symbol

ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它属于 JavaScript 语言的原生数据类型之一,其他数据类型是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Nu…

ELK高级搜索,深度详解ElasticStack技术栈-上篇

前言 1、黑马视频地址:java中级教程-ELK高级搜索,深度详解ElasticStack技术栈 2、本内容仅用于个人学习笔记,如有侵扰,联系删除 1. 课程简介 1.1 课程内容 ELK是包含但不限于Elasticsearch(简称es)、Lo…

小狐狸ChatGPT付费创作系统V2.3.4独立版 +WEB端+ H5端最新去弹窗授权

ChatGPT付费创作系统V2.3.4版本优化了很多细节,如果使用着2.2.9版本建议没升级的必要。该版本为编译版无开源,2.3.X版本开始官方植入了更多的后门和更隐性的弹窗代码,后门及弹窗处理起来更麻烦。特别针对后台弹窗网址、暗链后门网址全部进行了…

Node.js 的适用场景

目录 前言 适用场景 1. 实时应用 用法 代码 理解 代码示例 理解 3. 微服务架构 用法 代码示例 理解 总结 前言 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它使得 JavaScript 可以脱离浏览器运行在服务器端。Node.js 的出现极大地扩展…

git rebase冲突说明(base\remote\local概念说明)

主线日志及修改 $ git log master -p commit 31213fad6150b9899c7e6b27b245aaa69d2fdcff (master) Author: Date: Tue Nov 28 10:19:53 2023 08004diff --git a/123.txt b/123.txt index 294d779..a712711 100644 --- a/123.txtb/123.txt-1,3 1,4 123 4^Mcommit a77b518156…

java使用freemarker模板生成html,再生成pdf

1.freemarker模板生成html 添加Maven依赖 在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId> </dependency>创建Freemarker…

网络和Linux网络_6(应用层)HTTPS协议(加密解密+中间人攻击+证书)

目录 1. HTTPS协议介绍 1.1 加密解密和秘钥的概念 1. 2 为什么要加密 2. 对称加密和非对称加密 2.1 只使用对称加密 2.2 只使用非对称加密 2.3 双方都使用非对称加密 2.4 使用非对称加密对称加密 2.5 中间人攻击MITM 3. 证书的概念和HTTPS的通信方式 3.1 CA认证机构…

Redis 事件轮询

1 Redis 为什么快 数据存在内存中, 直接操作内存中的数据单线程处理业务请求避免了多线的上下文切换, 锁竞争等弊端使用 IO 多路复用支撑更高的网络请求使用事件驱动模型, 通过事件通知模式, 减少不必要的等待… 这些都是 Redis 快的原因。 但是这些到了代码层面是如何实现的呢…

负载均衡集群 LVS

集群 含义&#xff1a; Cluster、集群、群集多台主机组成一个整体&#xff0c;对外只提供一个访问接口 集群的分类 负载均衡集群&#xff08;LBC&#xff09; 提高系统的响应能力、尽可能处理更多的访问请求、以减少延迟为目标&#xff0c;获得高并发、高负载(LB)的整体性能…

【Linux】系统初始化配置

CentOS 7 的虚拟机安装后必须要做的几个操作&#xff0c;记录以下&#xff0c;网络配置修改、yum源安装、基础工具安装&#xff1a; 1、先修改权限&#xff0c;新建普通用户&#xff0c;并授权普通用户apps 的sudo权限&#xff1b; useradd apps password apps visudo apps A…

基于SSM的论文管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

集合框架(二)LinkedList的常见使用

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍LinkedList的常见使用以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可以在评论区留言 目…

【小爱学大数据】一个方法调试了一个上午

为了解决一个棘手的问题&#xff0c;我花了整个上午来调试一个“setBulkFlushInterval”的方法。这个方法的主要作用是控制批量数据刷新的时间间隔&#xff0c;以确保数据的及时性和稳定性。但在面对一个复杂的业务场景时&#xff0c;它却表现得不如预期。 我首先分析了代码逻辑…

Vue2问题:如何全局使用less和sass变量?

前端功能问题系列文章&#xff0c;点击上方合集↑ 序言 大家好&#xff0c;我是大澈&#xff01; 本文约2400字&#xff0c;整篇阅读大约需要4分钟。 本文主要内容分三部分&#xff0c;如果您只需要解决问题&#xff0c;请阅读第一、二部分即可。如果您有更多时间&#xff…

大一学编程怎么学?刚接触编程怎么学习,有没有中文编程开发语言工具?

大一学编程怎么学&#xff1f;刚接触编程怎么学习&#xff0c;有没有中文编程开发语言工具&#xff1f; 1、大一刚开始学编程&#xff0c;面对复杂的代码学习非常吃力&#xff0c;很难入门。建议刚接触编程可以先学习中文编程&#xff0c;了解其中的编程逻辑&#xff0c;学编程…

Flink流批一体计算(22):Flink SQL之单流kafka写入mysql

1. 准备工作 什么是Kafka源表 Kafka是分布式、高吞吐、可扩展的消息队列服务&#xff0c;广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域。 docker部署zookeeper docker pull wurstmeister/zookeeperdocker run -d --restartalways \ --log-dr…

LeetCode [中等]3. 无重复字符的最长子串

3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 1. 滑动窗口&#xff08;Sliding Window&#xff09;&#xff1a; 滑动窗口是一种用于处理数组或列表的子数组或子序列的问题…