Java学习 - MySQL数据库中提到的 事务 是什么? 怎么使用?

事务是什么

  • 事务是指由一条或者多条SQL语句组成的单元,这个单元在执行过程中具有ACID四个特征

事务的特征(ACID)

A:原子性
  • 事务是一个不可再拆分的最小工作单元
  • 事务中的SQL要不都成功,要不都失败(回滚)
C:一致性
  • 一致性是对数据可见性的约束,保证一个事务在执行操作过程中的数据中间状态对其他事务是不可见的,其他事务只能看到事务成功后的数据,或事务执行前的数据(回滚了)
  • 一致性关心的是数据的可见性,而原子性关心的是事务执行的结果
I:隔离性
  • 一个事务的执行不能被其他的事务干扰,即在并发过程中事务与事务之间是相互隔离,互不干扰的
D:持久性
  • 一个事务一旦提交,它对数据库中的数据改变是永久的,不能再进行回滚

事务并发中的问题

脏读
  • 对于两个事务T1,T2;
  • T1读取了已经被T2更新,但T2还没提交的数据
不可重复读
  • 对于两个事务T1,T2;
  • T1先读取了一个数据,然后该数据被T2更新了,最后T1再读一次,得到的数据与第一次读的数据不同
幻读
  • 对于两个事务T1,T2;
  • T1先读取了一个字段的数据,然后T2插入或删除了一些数据,最后T1再次读该字段的数据时,发现与第一次读相比多了/少了一些的数据
  • 不可重复读强调的数据本身的更新,幻读强调的时数据的新增或减少

MySQL引擎对事务的支持

  • innodb支持事务
  • myisam不支持事务
  • memory不支持事务

MySQL中事务的使用

隐式事务
  • MySQL的事务默认是隐式事务,事务自动开启和自动提交,即一条DML语句就是一个事务
  • 比如 INSERT INTO,UPDATE,DELETE FROM
显式事务
SET AUTOCOMMIT = 0; # 关闭事务自动提交功能
START TRANSACTION; # 开启事务SQL语句1SQL语句2...SQL语句n
COMMIT; # 提交事务SET AUTOCOMMIT = 0; # 关闭事务自动提交功能
START TRANSACTION; # 开启事务SQL语句1SQL语句2...SQL语句n
ROLLBACK; # 回滚事务
  • SAVEPOINT的使用

    SET AUTOCOMMIT = 0; # 关闭事务自动提交
    START TRANSACTION # 开启事务SQL语句1SAVEPOINT a; # 设置保存点SQL语句2ROLLBACK TO a; # 回滚到保存点...SQL语句n
    COMMIT;
    

MySQL的四种事务隔离级别

四种隔离级别列表
隔离级别译名避免脏读避免不可重复读避免幻读
READ UNCOMMITTED读未提交×××
READ COMMITTED读已提交××
REPEATABLE READ (mysql默认)可重复读×
SERIALIZABLE串行化
查看当前隔离级别
SELECT @@tx_isolation
修改隔离级别
SET SESSION|GLOBAL TRANSACTION ISOLATION LEVEL     READ UNCOMMITTED
SET SESSION|GLOBAL TRANSACTION ISOLATION LEVEL     READ COMMITTED
SET SESSION|GLOBAL TRANSACTION ISOLATION LEVEL     REPEATABLE READ
SET SESSION|GLOBAL TRANSACTION ISOLATION LEVEL     SERIALIZABLE

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

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

相关文章

JavaScript中有哪几种循环?他们的运用场景在哪?

在JavaScript中,主要有三种循环结构:for循环、while循环和do...while循环。每种循环都有其特定的运用场景。 1.for循环 for循环是最常用的循环结构之一,它通常用于在知道循环次数的情况下执行一段代码。for循环的基本语法如下: …

如何在 Vue 3 中使用 vue3-print-nb 实现灵活的前端打印

你好,我是小白Coding日志,一个热爱技术的程序员。在这里,我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客,一起在技术的世界里探索前行吧! 前言 在前端开…

Vue38-组件的几个注意点

一、组件回顾 1-1、创建组件 1-2、注册组件 1-3、使用组件 二、注意点:组件名 2-1、组件名一个单词:纯小写,或者,首字母大写 2-2、多个单词: 1、xx-bbbb 2、AaaBbbb:每个单词的首字母都大写 前提&…

【NUJ PA2】Read a Makefile

这里是NJU的PA2.2里面要求读懂的Makefile,是abstract-machine的。这里会放一些与读懂这个Makefile有关的知识。 下面是用ChatGPT解释的代码。只做大致的了解,写Makefile的时候还是要具体去看官方手册。 官方手册:make.pdf (gnu.org) # Makef…

军用FPGA软件 Verilog语言的编码准测之复位

军用FPGA软件 Verilog语言的编码准测之复位 语言 :Verilg HDL EDA工具:ISE、Vivado、Quartus II 军用FPGA软件 Verilog语言的编码准测之复位一、引言二、基本编程规范之复位强制准则1----禁止将异步的置位/复位信号连接到非置位/复位端强制准则2----禁止…

Json-server 的使用教程

目录 前言一、简介二、安装与配置1. 安装 node-js2. npm 镜像设置3. 安装 json-server 三、使用1. 创建本地数据源2. 启动 Json Server3. 操作数据(1)查询数据(2)新增数据(3)修改数据(4&#xf…

RTOS笔记--资源管理

资源管理 资源管理,其实就是前面介绍过的通知方式中的队列信号量互斥量等是如何访问临界资源的,如何做到完全互斥。 在之前举过一个例子:当我们使用全局变量来进行互斥操作时,有可能在改写全局变量时被切换使得不再互斥&#xff0…

【SpringBoot】深入分析 SpringApplication 源码:彻底理解 SpringBoot 启动流程

在黄昏的余晖里,梦境渐浓,如烟如雾。心随星辰,徜徉远方,岁月静好,愿如此刻般绵长。 文章目录 前言一、SpringBoot 应用二、SpringApplication2.1 SpringApplication 中的属性2.2 SpringApplication 的构造器2.3 Sprin…

185. 部门工资前三高的所有员工

185. 部门工资前三高的所有员工 题目链接:185. 部门工资前三高的所有员工 代码如下: # Write your MySQL query statement below select d.Name as Department,e1.Name as Employee,e1.Salary from Employee as e1 join Department as d on e1.Depart…

【Linux】基础IO——文件描述符,重定向,FILE

话接上篇: 1.文件描述符fd 磁盘文件 VS 内存文件? 当文件存储在磁盘当中时,我们将其称之为磁盘文件,而当磁盘文件被加载到内存当中后,我们将加载到内存当中的文件称之为内存文件。磁盘文件和内存文件之间的关系就像程…

JVM 三色标记算法

三色标记算法核心原理 三色标记算法是一种JVM的垃圾标记算法,CMS/G1垃圾回收器就是使用的这种算法,它可以让JVM在不发生或者尽可能短的发生STW(Stop The World)的情况下进行垃圾的标记和清除。 顾名思义,三色标记算法…

【名词解释】Unity中的3D物理系统:刚体

Unity中的3D物理系统是用于模拟现实世界中物体的运动和相互作用的一套工具和组件。刚体(Rigidbody)是Unity 3D物理系统中的一个核心组件,它允许游戏对象(GameObject)受到重力和外力的影响,并参与碰撞检测。…

实现JWT认证与授权的Spring Boot项目详解

我们将详细介绍如何使用JWT(JSON Web Tokens)结合Spring Boot框架实现用户认证和授权系统。此方案将包括用户注册、登录以及通过JWT令牌进行后续请求的身份验证过程。我们将从引入必要的依赖开始,然后逐步构建项目的各个部分,包括…

精品丨PowerBI迁移到SSAS

业务场景: 企业初期在进行 BI 可视化路线的时候,往往不会选择方案较为完整的SSAS,而是会选择轻量的 PowerBI 方案,究其根本还是软件成本的问题。 但是随着模型越来越臃肿,维护成本越来越高,有很多模型需要进…

【名词解释】Unity中的3D坐标系

Unity中的3D坐标系是一个基于右手定则的笛卡尔坐标系,它定义了Unity场景中所有3D对象的位置、旋转和缩放。以下是一些基本的名词解释和使用方法: 名词解释: X轴:水平方向,从屏幕左侧向右延伸。Y轴:垂直方…

SQL Auto Increment

SQL Auto Increment 在关系型数据库中,自动增量(Auto Increment)是一个常见且实用的特性。它允许数据库自动为表中插入的新行分配唯一的标识符,通常用于主键字段。本文将深入探讨SQL中的自动增量功能,包括其工作原理、…

Java面向对象-抽象类和抽象方法

Java面向对象-抽象类和抽象方法 1、代码案例展示2、抽象类和抽象方法的关系: 1、代码案例展示 1、在一个类中会有一类方法,无需重写,直接使用 2、在一个类中会有一类方法,会对这个方法进行重写 3、一个方法的方法体去掉&#xff…

【文心智能体分享】日记周报助手

引言 在繁忙的实习生活中,你是否曾为如何整理日常的工作日志、周报、月报而烦恼?现在,我们为你带来了一个全新的智能体——“日记周报助手”,它将成为你实习过程中的得力助手,帮你轻松整理实习日志,让你的…

mysql 中的锁

一.锁的介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,除了传统的计算资源(cpu,ram,i/o)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性…

【C#】IndexOf的使用

1. 在ObservableCollection<T> 类中使用&#xff1a; ObservableCollection<T> 类是 C# 中的一个集合类&#xff0c;它继承自 Collection<T> 并实现了 INotifyCollectionChanged 接口&#xff0c;使得集合的更改可以自动通知给任何监听它的界面元素。这使得…