mysql之事务

1、事务的定义

事务是一种机制,一个操作序列,包含了一组数据库的操作命令,所有命令都是一个整体,作为一个整体向系统提交或者撤销的操作,要么都执行,要么都不执行,是一个不可分割的单位

2、事务的特点ACID

A原子性:最小单位,事务里的所有条件都是一个整体,不可分割,要么都成功,要么都失败

C一致性:事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。事务完成时,数据必须处于一致状态;事务开始前,数据库中的存储数据也处于一致状态;事务进行中,数据可能处于不一致。当事务最终完成时,必须再次回到已知的一致状态

I隔离性:只在并发环境中,不同事务同时操作相同的数据时,每个数据都有各自的完整的数据空间,对数据进行修改所有并发事务是彼此隔离的,表明事务必须是独立的。修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同的事务结束之后访问这些数据

D持久性:数据一旦提交,事务的效果将永久保留在数据库中,并且不会被回滚

总结:在事务管理中,原子性是基础,隔离性是手段,保证原子性,一致性是目的,持久性是最终结果

3、mysql支持的四种隔离级别

①未提交读:允许脏读。允许一个事务可以看到其他事务未提交的修改

②提交读:防止脏读。事务只能查看已经提交的修改数据,未提交的修改不可见。orcale和sql server使用此隔离方式(常用)

③可重复读:mysql的默认隔离级别。确保子啊一个事务中执行两次相同的select语句时,都能得到相同的结果,不论其他事务是否提交修改。可防止脏读及不可重复读(常用)

④串行读:锁表。完全串行化,每一个事务都隔离,读写都阻塞。降低数据库的效率(不用)

4、数据出错原因(生产环境不会出现这些问题)

(1)脏读:一个事务可以看到另外一个事务未提交的修改结果

(2)不可重复读:一个事务内,多次读同一数据。前一个事务还没有结束,另一个事务也访问该数据。在一个事务内,两次查询到结果不一致,读不到相同的数据内容(测试环境中常见)

(3)幻读:一个事务对一个表中的数据进行修改,可能涉及到表中的全部数据,另一个事务也修改此表中的数据,前一个事务会发现表中仍然有数据未修改,类似于幻觉(测试环境中常见)

(4)丢失更新:两个事务同时修改同一条记录,A先修改记录,B后修改记录,B一旦提交会覆盖A的修改结果(测试环境中常见)

5、如何避免数据出错

(1)权限控制(关键)

(2)根据情况使用隔离级别。生产环境最好是提交读,或提交读和可重复读,确认之后发生改变。测试环境隔离级别任意

(3)生产环境只能允许一个人对一个事务进行操作,A操作时,其他人不允许操作

6事务隔离级别的作用范围

(1)全局级:对所有的会话有效

(2)会话级:只对当前的会话有效

7、查询隔离级别

(1)查询全局事务的隔离级别

①show global variables like '%isolation';

②select@@global.tx_isolation;

2查询会话事务的隔离级别

①show session variables like '%isolation';

②select@@session.tx_isolation;

8、设置隔离级别

(1)修改全局事务的隔离级别

永久修改:set global transaction isolation level read uncommitted;

临时修改,重启服务即失效:set @@global.tx_isolation='read uncommitted';

(2)修改会话事务的隔离级别

永久修改:set session transaction isolation level read uncommitted;

临时修改,重启服务即失效:set @@session.tx_isolation='read uncommitted';

9、事务的控制语句

begin、start、transaction显示的开启事务

commit、commit work提交事务

rollback、rollback work回滚事务(撤销正在进行的所有未提交的修改)

savepoint 名称  创建回滚点(一个事务可有多个回滚点)

rollback to 名称 回滚到还原点

注意:

①多点还原S1和S2。若还原到S1,S2消失;若提交,所有还原点全部消失

②mysql提交事务默认自动提交,必须以begin开始才能设置还原点

10、实题

问题:set autocommit=0;关闭自动提交

如果不是自动提交会出现什么情况?

解答:黑色的是一个事务,白色的是另一个事务

结论:自动提交关闭,必须commit修改记录对数据库的操作才会真正生效,具有持久性

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

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

相关文章

Modelsim 使用教程(3)——Projects

目录 一、概述 二、设计文件及tb 2.1 设计文件 counter.v 2.2 仿真文件 tcounter.v 三、操作流程 3.1 Create a New Project(创建一个新的工程) 3.2 Add Objects to the Project(把代码加入项目) 3.3 Compile the …

【44.全排列Ⅱ】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:vector<vector<int>> ret;vector<int> path;vector<bool> check;vector<vector<int>> permuteUnique(vector<int>&am…

winscp文件增量同步到linux服务器

一&#xff0c;点击同步 场景&#xff1a;在做服务器迁移的时候&#xff0c;文件好几十个G一天也迁移不完&#xff0c;每天还有增量的文件&#xff0c;先全量同步一次&#xff0c;然后再用增量同步&#xff0c;然后你用winscp的同步工具&#xff0c;进增量同步。 将本地文件同…

k8s 资源预留

KUBERNETES资源管理之–资源预留 Kubernetes 的节点可以按照 Capacity 调度。node节点本身除了运行不少驱动 OS 和 Kubernetes 的系统守护进程&#xff0c;默认情况下 pod 能够使用节点全部可用容量&#xff0c; 除非为这些系统守护进程留出资源&#xff0c;否则它们将与 pod 争…

BUUCTF 另外一个世界 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 下载附件&#xff0c;解压得到一个.jpg图片。 密文&#xff1a; 解题思路&#xff1a; 1、这道题我尝试了很多方法&#xff0c;知道看了别人的wp才知道flag在我忽略的地方。将图片在010 Editor中打开&#xff0c;从…

服务号升级订阅号的流程

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;首先我们要知道服务号和订阅号有什么区别。服务号侧重于对用户进行服务&#xff0c;每月可推送4次&#xff0c;每次最多8篇文章&#xff0c;发送的消息直接显示在好友列表中。订阅号更侧重于信息传…

【QT】绘图设备

绘图设备是指继承QPainterDevice的子类。Qt提供了很多这样的类&#xff0c;例如QPixmap、QBitmap、QImage和 QPicture。其中&#xff0c; QPixmap专门为图像在屏幕上的显示做了优化QBitmap是QPixmap的一个子类&#xff0c;它的色深限定为1&#xff0c;可以使用 QPixmap的isQBi…

使用工具+迅雷解决ESP32配置下载问题

因为一些原因下载git上内容相当缓慢或都根本无法下载所以写了一个工具获取链接并使用迅雷下载。 工具下载&#xff1a;【免费】使用迅雷下载开发板工具资源-CSDN文库

分享77个工作总结PPT,总有一款适合您

分享77个工作总结PPT&#xff0c;总有一款适合您 PPT下载链接&#xff1a;https://pan.baidu.com/s/1qdoA_Ylbxkmp2Qkh9VDw8A?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 水彩插画风幼儿说课PPT模板 舞龙舞狮文化传承通…

【前端设计】HTML+CSS+JavaScript基本特性

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

小程序使用echarts(超详细教程)

小程序使用echarts第一步就是先引用到小程序里面&#xff0c;可以直接从这里下载 文件很多&#xff0c;我们值下载 ec-canvas 就好&#xff0c;下载完成后&#xff0c;直接放在pages同级目录下 index.js 在我们需要的页面的 js 文件顶部引入 // pages/index/index.js impor…

BUUCTF RSA4

BUUCTF RSA4 下载题目&#xff0c;可见文件给出了3组n和c N 331310324212000030020214312244232222400142410423413104441140203003243002104333214202031202212403400220031202142322434104143104244241214204444443323000244130122022422310201104411044030113302323014101…

从零开始的目标检测和关键点检测(三):训练一个Glue的RTMPose模型

从零开始的目标检测和关键点检测&#xff08;三&#xff09;&#xff1a;训练一个Glue的RTMPose模型 一、重写config文件二、开始训练三、ncnn部署 从零开始的目标检测和关键点检测&#xff08;一&#xff09;&#xff1a;用labelme标注数据集 从零开始的目标检测和关键点检测…

Java自学第1课:安装JDK+Eclipse

1 引言 在学习前&#xff0c;我想说一句&#xff0c;那就是为什么要学习Java。 每个人的出发点都不同&#xff0c;对于做信息化的工程技术人员来说&#xff0c;java不懂&#xff0c;就没法干项目。 尽管有c和matlab等基础&#xff0c;但java看起来与这些语言都不太一样。 做…

PXI-6608 185745H-02 PXI-6527 185633D-01

PXI-6608 185745H-02 PXI-6527 185633D-01 人工智能技术并不新鲜&#xff0c;但运行它的数据和计算却很新鲜 对于那些对人工智能技术历史感兴趣的人来说&#xff0c;一些今天正在使用的技术从20世纪50年代和60年代就已经存在了。 但是&#xff0c;如果人工智能已经存在了这么…

智能电表瞬时电量是什么意思?

智能电表已经成为我们进行能源管理的重要工具。其中&#xff0c;瞬时电量这一概念逐渐走进大众视野。那么&#xff0c;智能电表瞬时电量究竟是什么意思&#xff1f;它对我们的生活和能源管理又有哪些影响呢&#xff1f;下面&#xff0c;小编就来为大家介绍一下瞬时电量&#xf…

安卓毕业设计:基于安卓Android的仓库货物管理app

项目介绍 本文介绍了仓库货物管理APP软件开发建设的意义和国内外发展现状&#xff0c;然后详细描述了所开发手机APP的可行性分析&#xff0c;并分析了手机APP所要实现的功能。因为仓库货物管理设施较多&#xff0c;而且人口密集&#xff0c;不能更好的管理仓库货物&#xff0c…

django毕业设计基于python企业资产管理系统

项目介绍 本文首先介绍了企业资产管理系统的发展背景与发展现状&#xff0c;然后遵循软件常规开发流程&#xff0c;首先针对系统选取适用的语言和开发平台&#xff0c;根据需求分析制定模块并设计数据库结构&#xff0c;再根据系统总体功能模块的设计绘制系统的功能模块图&…

【LeetCode刷题-链表】--146.LRU缓存

146.LRU缓存 方法一&#xff1a;哈希表双向链表 使用一个哈希表和一个双向链表维护所有在缓存中的键值对 双向链表按照被使用的顺序存储了这些键值对&#xff0c;靠近头部的键值对是最近使用的&#xff0c;而靠近尾部的键值对是最久使用的哈希表即为普通的哈希映射&#xff0…

文心一言 VS 讯飞星火 VS chatgpt (127)-- 算法导论11.2 2题

二、用go语言&#xff0c;位向量(bit vector)是一个仅包含0和1的数组。长度为m的位向量所占空间要比包含m个指针的数组少得多。请说明如何用一个位向量来表示一个包含不同元素(无卫星数据)的动态集合。字典操作的运行时间应为 O(1)。 文心一言&#xff0c;代码正常运行&#x…