MySQL事务

1、事务的概念

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

事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。

事务适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等。

事务通过事务的整体性以保证数据的一致性。

总的来说,事务就是是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

2、事务的ACID特点

ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。这是可靠数据库所应具备的几个特性。

2.1 原子性

指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。

事务是一个完整的操作,事务的各元素是不可分的。

事务中的所有元素必须作为一个整体提交或回滚。

如果事务中的任何元素失败,则整个事务将失败。

2.2 一致性

指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

当事务完成时,数据必须处于一致状态。

在事务开始前,数据库中存储的数据处于一致状态。

在正在进行的事务中,数据可能处于不一致的状态。

当事务成功完成时,数据必须再次回到已知的一致状态。

2.3 隔离性

指在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。

对数据进行修改的所有并发事务是彼此隔离的,表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。

修改数据的事务可在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。

事务之间的相互影响分为几种,分别为:

(1)脏读:一个事务读取了另一个事务未提交的数据,而这个数据是有可能回滚的。

(2)不可重复读:一个事务内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交而引起的。

(3)幻读:一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,另一个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,操作前一个事务的用户会发现表中还有没有修改的数据行,就好象发生了幻觉一样。

(4)丢失更新:两个事务同时读取同一条记录,A先修改记录,B也修改记录(B不知道A修改过),B提交数据后B的修改结果覆盖了A的修改结果。

Mysql 及事物隔离级别:

(1)read_uncommitted : 读取尚未提交的数据 :不解决脏读

(2)read_committed:读取已经提交的数据 :可以解决脏读

(3)repeatable_read:重读读取:可以解决脏读 和 不可重复读 —mysql默认的

(4)serializable:串行化:可以解决 脏读 不可重复读 和 虚读—相当于锁表

mysql默认的事务处理级别是 repeatable read ,而Oracle和SQL Server是 read committed

事务隔离级别脏读不可重复读幻读第一类丢失更新第二类丢失更新
read uncommitted允许允许允许禁止允许
read committed禁止允许允许禁止允许
repeatable read禁止禁止允许禁止禁止
serializable禁止禁止禁止禁止禁止

2.3.1 查询全局事务隔离级别:

show global variables like '%isolation%';
SELECT @@global.tx_isolation;

2.3.2 查询会话事务隔离级别

show session variables like '%isolation%';
SELECT @@session.tx_isolation;
SELECT @@tx_isolation;

2.3.3 设置全局事务隔离级别

set global transaction isolation level read committed;

2.3.4 设置会话事务隔离级别

set session transaction isolation level read uncommitted;

2.4 持久性

在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

指不管系统是否发生故障,事务处理的结果都是永久的。

一旦事务被提交,事务的效果会被永久地保留在数据库中。

2.5 总结

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

3、事务控制语句

BEGIN 或 START TRANSACTION:显式地开启一个事务。

COMMIT 或 COMMIT WORK:提交事务,并使已对数据库进行的所有修改变为永久性的。

ROLLBACK 或 ROLLBACK WORK:回滚会结束用户的事务,并撤销正在进行的所有未提交的修改。

SAVEPOINT S1:使用 SAVEPOINT 允许在事务中创建一个回滚点,一个事务中可以有多个 SAVEPOINT;“S1”代表回滚点名称。

ROLLBACK TO [SAVEPOINT] S1:把事务回滚到标记点。

3.1 测试提交事务


  

3.2 测试回滚事务

3.3 测试多点回滚

4、使用 set 设置控制事务

SET AUTOCOMMIT=0;                       #禁止自动提交
SET AUTOCOMMIT=1;                       #开启自动提交,Mysql默认为1
SHOW VARIABLES LIKE 'AUTOCOMMIT';                       #查看Mysql中的AUTOCOMMIT值
 
如果没有开启自动提交,当前会话连接的mysql的所有操作都会当成一个事务直到你输入rollback|commit,当前事务才算结束。当前事务结束前新的mysql连接时无法读取到任何当前会话的操作结果。
如果开起了自动提交,mysql会把每个sql语句当成一个事务,然后自动的commit。
当然无论开启与否,begin; commit|rollback; 都是独立的事务。
 

4.1 SET AUTOCOMMIT=0; #禁止自动提交

4.2 SET AUTOCOMMIT=1; #开启自动提交,Mysql默认为1

4.3 测试没有开启自动提交功能

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐一些非常好用的DNS服务器

推荐一些非常好用的DNS服务器 1、114公共DNS服务器 1) 老牌的114DNS,全国三网通用高速,纯净无劫持无需再忍受被强扭去看广告或粗俗网站之痛苦 DNS地址为:114.114.114.114 和 114.114.115.115 2)拦截 钓鱼病毒木马网…

【目标检测论文阅读笔记】Dynamic Head: Unifying Object Detection Heads with Attentions

Abstract 在目标检测中结合定位和分类的复杂性导致了方法的蓬勃发展。以前的工作试图提高各种目标检测头的性能,但未能提出统一的观点。在本文中,我们提出了一种新颖的动态头部框架 来统一目标检测头部和注意力。通过在用于尺度感知的特征级别之间、用于…

SpringCloud学习笔记06

九十五、Cloud Alibaba简介 0、why会出现SpringCloud alibaba Spring Cloud Netflix项目进入维护模式 1、是什么 官网:spring-cloud-alibaba/README-zh.md at 2.2.x alibaba/spring-cloud-alibaba GitHub 2、能干嘛 3、去哪下 spring-cloud-alibaba/README-…

【软考高项笔记】第3章 信息系统治理(针对甲方)3.1 IT治理

第3章 信息系统治理(针对甲方) 3.1 IT治理 不同于管理,角度更高3.1.1 IT治理基础 目标价值 与业务目标一致 有效利用信息与数据资源 风险管理 管理层次 最高管理层 (定目标,战略) 执行管理层 &#xff08…

【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南

欢迎关注【youcans的学习笔记】原创作品,火热更新中 【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南 1. BingChat 简介2. BingChat 用户注册2.1 下载微软浏览器 Edge 预览版2.2 申请微软账户2.3 登录 Bing.com2.4 手机/平板使用 BingChat 3. BingChat 的聊…

4.shell函数

文章目录 shell函数shell函数的作用函数返回值函数传参函数变量作用范围递归阶乘使用函数递归目录/var/log,如果是文件直接输出文件名,如果是目录则输出目录名且输出此目录下的所有目录和文件名通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录…

【Jmeter快速入门】

Jmeter快速入门 Jmeter快速入门1.安装Jmeter1.1.下载1.2.解压1.3.运行 2.快速入门2.1.设置中文语言2.2.基本用法 Jmeter快速入门 1.安装Jmeter Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 1.1.下载 可以Apache Jm…

SSM整合详细教学(上)

SSM整合详细教学(上) 一、SSM整合1. SSM整合配置1.1 SSM整合流程1.2 SSM整合配置1.2.1 创建工程,添加依赖和插件1.2.2 Spring整合Mybatis1.2.3 Spring整合SpringMVC 2. 功能模块开发2.1 数据层开发(BookDao)2.2 业务层开发(BookService/BookS…

TIM编码器接口

一、知识点 1、Encoder Interface 编码器接口的工作流程 编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度 2、编码器接口…

「领域驱动设计」DDD,六边形架构,洋葱架构,整洁架构和CQRS的整合

这篇文章是软件架构编年史的一部分,一系列关于软件架构的文章。在这些文章中,我写了我对软件架构的了解,我如何看待它,以及我如何使用这些知识。如果您阅读了本系列以前的文章,那么本文的内容可能更有意义。 今天的帖子…

【多任务学习】Multi-task Learning 手把手编码带数据集, 一文吃透多任务学习

文章目录 前言1.多任务学习1.1 定义1.2 原理 2. 多任务学习code2.1 数据集初探2.2 预处理2.3 网络结构2.4 训练 3. 总结 前言 我们之前讲过的模型通常聚焦单个任务,比如预测图片的类别等,在训练的时候,我们会关注某一个特定指标的优化. 但是有时候,我们需要知道一个图片,从它身…

PostgreSQL 基础知识:psql 提示和技巧

对于积极使用和连接到 PostgreSQL 数据库的任何开发人员或 DBA 来说,能够访问psql命令行工具是必不可少的。在我们的第一篇文章中,我们讨论了 psql的简要历史,并演示了如何在您选择的平台上安装它并连接到 PostgreSQL 数据库。 在本文中&…

HTTPS协议介绍

文章目录 一、HTTPS协议的认识二、常见的加密方式1.对称加密2.非对称加密 三、数据摘要四、HTTPS的工作过程探究1.只使用对称加密2.只使用非对称加密3.双方都使用非对称加密4.非对称加密对称加密5.中间人攻击6.引入证书7.非对称加密对称加密证书认证 一、HTTPS协议的认识 HTTP…

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE GET 向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意…

Docker 持久化存储 Bind mounts

Docker 持久化存储 Bind mounts Bind mounts 的 -v 与 --mount 区别启动容器基于bind mount挂载到容器中的非空目录只读 bind mountcompose 中使用 bind mount 官方文档:https://docs.docker.com/storage/bind-mounts/ Bind mounts 的 -v 与 --mount 区别 如果使用…

ePWM模块(1)

ePWM模块 ePWM模块内部包含有7个子模块,分别是时间基准子模块TB、比较功能子模块CC,动作限定子模块AQ、死区控制子模块DB、斩波控制子模块PC、事件触发子模块ET和故障捕获子模块TZ。 每个ePWM模块都具有以下功能: 可以输出两路PWM,EPWMxA和EPWMxB两路PWM可以独立输出,也可…

大二一个学期学这么点内容,没有概念,只有实操

如何查看所有的数据库: Show databases; 如何进入某个数据库: use xxx; 如何新进数据库: Create database jx; 如何删除数据库: Drop database jx; 如何查看所有的表格: Show tables; 如何创建数据表&#xf…

【Flink】DataStream API使用之执行环境

1. 执行环境 Flink 程序可以在各种上下文环境中运行:我们可以在本地 JVM 中执行程序,也可以提交 到远程集群上运行。不同的环境,代码的提交运行的过程会有所不同。这就要求我们在提交作业执行计算时,首先必须获取当前 Flink 的运…

(异或相消)猫猫数字异或和

E - Red Scarf (atcoder.jp) 刚入坑写的一道题被我拉出来对比分析了 我的思路: 垃圾运气选手凭借直觉乱搞猜出来的,没有思路。 题解思路: 由问题陈述中XOR的定义,我们可以看出计算3个或更多整数的XOR可以以任意顺序进行&#…

ChatGPT :十几个国内免费可用 ChatGPT 网页版

前言 ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序 ,于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言…