当前位置: 首页 > news >正文

mysql之事务

(一)事务

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

2、不可分割的单位

(二)事务的特点(ACID)

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

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

2、一致性(C):事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。

(1)事务完成时,数据必须处于一致状态。
(2)事务开始之前,数据库中的存储数据处于一致状态
(3)进行中的事务,数据可能处于不一致的状态
(4)在事务最终完成时,必须再次回到已知的已知状态
脏读——解决:commit

3、隔离性(I):指在并发环境中,当不同事务同时操纵相同的数据时,每个事务都有各自完整的数据空间,对数据进行修改的所有并发事务是彼此隔离的,表明事务必须是独立的

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

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

(三)mysql支持四种隔离级别

1、未提交读(脏读):允许脏读,允许一个事务可以看到其他事务未提交的修改

2、提交读:事务只能查看已经提交的修改,未提交的修改是不可见的,可以防止脏读(orcale、sql-server)

3、可重复读:mysql的默认隔离级别,确保如果在一个事务中执行两次相同的select语句时,都能得到相同的结果,不管其他事务是否提交修改,可以防止脏读以及不可重复读。

4、串行读,锁表,完全串行化,每一个事务都隔离,读写都会阻塞,会降低数据库的效率

(四)事务隔离级别的作用范围

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

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

设置事务的隔离级别

1、全局级:

(1)设置全局事务的隔离级别:
set global transaction isolation level read uncommitted;
(2)临时设置全局事务的隔离级别(重启即失效):
set @@global.tx_isolation='read uncommitted';

2、会话级:

(1)设置会话事务的隔离级别:
set session transaction isolation level read uncommitted;
(2)临时设置会话事务的隔离级别(重启即失效):
set @@session.tx_isolation='read uncommitted';
flush privileges;

(六)脏读

1、脏读:另外一个事务能够看到另一个事务未提交的修改结果

2、exit退出即可解决

(七)不可重复读(两次出现的数据不一致)

1、不可重复读:一个事物内,多次读同一数据。前一个事务还没有结束,另一个事务也访问该数据,在一个事务之内,两次查询到的结果不一致(读不到相同的数据内容)

2、修改全局级的隔离级别

3、实验

4、提交(commit)

(八)幻读(测试环境中会遇到)

1、幻读:一个事务对一个表中的数据进行了修改,可能会涉及到表中的全部数据。另一个事务也修改了表中的数据,插入了一行新的数据,前一个事务会发现表中还有数据没有修改,类似于幻觉

2、实验

3、解决(以最终提交数据为准)

(九)丢失更新(测试环境中会遇到)

1、丢失更新:两个事务同时修改一条记录,A先修改记录,B也修改了记录,B一旦提交会覆盖A的结果

2、实验

(1)同时开始数据
(2)修改数据

避免上述(幻读、丢失更新等)情况(重点)

1、权限控制(最小权限设置)

2、根据情况来使用隔离级别

(1)生产环境最好是提交读、可重复读
(2)测试环境无所谓

3、生产环境上,只能允许一个人对一个事务进行操作,其他人不允许操作

(十一)事务的控制语句

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

2、提交事务:commit、commit work

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

(1)创建回滚点(一个事务可以有多个回滚点):savepoint s1(名称自定义)
(2)回滚到还原点:rollback to s1

4、多点还原:S1、S2

(1)如果还原到S1,S2将消失
(2)如果提交、确认,所有还原点全部消失

4、mysql:默认自动提交到数据库中保存(提交事务默认是自动提交)

(1)使用set来设置mysql的提交方式

(2)show variables like autocommit(查看级别)

(3)set autocommit=0;(关闭自动提交)

相关文章:

mysql之事务

(一)事务 1、事务是一种机制一个操作序列,包含了一组数据库的操作命令,所有命令都是一个整体,向系统提交或者撤销的操作,要么都执行,要么都不执行 2、不可分割的单位 (二&#xf…...

组件化npm包打包和使用

背景:本地环境对功能组件提取,开发环境下通过本地路径引用,发布模式下走npm包引用 1、项目下新建packages/HelloWorld文件夹,在此文件夹下运行终端 npm init 新建packages/HelloWorld/index.vue文件 新建packages/HelloWorld/ind…...

Windows 内置Linux子系统的配置(From WSL1 to WSL2)

目录 我是如何从WSL1转到WSL2的? WSL1与WSL2的功能区别: 配置下载源 SSH配置 优雅使用windows的Linux子系统 我是如何从WSL1转到WSL2的? 第一次安装的子系统是WSL1的,因为不能使用systemctl ,以及因为WSL1没有完整的Linux内核,所以使得WSL1很多命令…...

2023-11-03 android app TextView 滚动,ScrollView 之外的另外一种方法

一、布局xml文件中TextView 增加下面属性 android:maxLines "AN_INTEGER" android:scrollbars "vertical" 二、在java代码中添加下面代码,就可以滚动了。 m_TextView.setMovementMethod(new ScrollingMovementMethod())...

SAP 获取GOS附件清单及URL数据方法

很久没有更新了,断更了快两个月了,最近准备软考考试,刚考完不知道这次能不能通过 回归正题 SAP中很多业务中都是可以上传附件或者是上传URL的路径的,上传附件长时间会占用SAP的空间,使用GOS大多数都是采用上传URL的方式…...

VUE批量下载图片打包成zip下载

import JSZip from jszip; import { saveAs } from file-saver; downloadImages() {var zip new JSZip();// 创建images文件夹//imageUrls[本地路径,或者网络路径];var imgFolder zip.folder("images");let flag 0 // 判断加载了几张图片的标识for (let i 0; i …...

微信小程序-form表单-获取用户输入文本框的值

微信小程序-form表单-获取用户输入文本框的值 data: {userName: ,userPwd:""},//获取用户输入的用户名 userNameInput:function(e) {this.setData({userName: e.detail.value}) }, passWdInput:function(e) {this.setData({userPwd: e.detail.value}) }, //获取用户输…...

Docker(1)

文章目录 Docker物理机部署的缺点虚拟机Docker 与虚拟机的区别Docker 的优势 Docker 概念安装 DockerDocker 架构镜像加速Docker 命令进程服务相关命令 镜像相关文件命令容器相关的命令 镜像加载的原理UnionFS(联合文件系统)docker 镜像加载原理 容器的数据卷数据卷概念配置数据…...

axios 实现请求重试

前景提要: ts 简易封装 axios,统一 API 实现在 config 中配置开关拦截器 请求重试的核心是可以重放请求,具体实现就是在 axios 中,拿到当前请求的 config 对象,再用 axios 实例,就能重放请求。 在无感刷新…...

SSE加速随笔

Intel Intrinsics Guide 搞懂SSE 寄存器与指令数据细节 SSE指令集推出时,Intel公司在Pentium III CPU中增加了8个128位的SSE指令专用寄存器,称作XMM0到XMM7。这些XMM寄存器用于4个单精度浮点数运算的SIMD执行,并可以与MMX整数运算或x87浮点运…...

【TES720D】青翼科技基于复旦微的FMQL20S400全国产化ARM核心模

板卡概述 TES720D是一款基于上海复旦微电子FMQL20S400的全国产化核心模块。该核心模块将复旦微的FMQL20S400(兼容FMQL10S400)的最小系统集成在了一个50*70mm的核心板上,可以作为一个核心模块,进行功能性扩展,特别是用…...

arcgis删除细长图斑的方法

1、有一张图斑数据如下: 如上图,有很多细长的面要素,需要保留的仅是图中的块状要素。 2、首先要将被合并的要素进行拆分,具体拆分步骤如下: 将所有要素选中,点击高级编辑中的拆分按钮。 3、拆分后图斑就…...

Flutter笔记:Flutter的WidgetsBinding.instance的window属性

Flutter笔记 Flutter的WidgetsBinding.instance的window属性 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/det…...

element UI DatePicker 日期选择器 点击时间点可选限制范围前后十五天

<el-date-picker v-model"timeRange" type"datetimerange" align"right" :default-timedefaultTimevalue-format"yyyy-MM-dd HH:mm:dd" range-separator"至" start-placeholder"开始日期"end-placeholder"…...

【自用】vmware workstation建立主机window与虚拟机ubuntu之间的共享文件夹

1.在windows中建立1个文件夹 在vmware中设置为共享文件夹 参考博文&#xff1a; https://zhuanlan.zhihu.com/p/650638983 2.解决&#xff1a; &#xff08;1&#xff09;fuse: mountpoint is not empty &#xff08;2&#xff09;普通用户也能使用共享目录 参考博文&#x…...

【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析

【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A&#xff1a;基于计算机视觉的坑洼道路检测和识别 python 代码解析 1 题目 坑洼道路检测和识别是一种计算机视觉任务&#xff0c;旨在通过数字图像&#xff08;通常是地表坑洼图像&#xff09;识别出存在坑洼的道路。这…...

Mozilla Firefox 119 现已可供下载

Mozilla Firefox 119 开源网络浏览器现在可以下载了&#xff0c;是时候先看看它的新功能和改进了。 Firefox 119 改进了 Firefox View 功能&#xff0c;现在可以提供更多内容&#xff0c;如最近关闭的标签页和浏览历史&#xff0c;你可以按日期或网站排序&#xff0c;还支持查…...

What is 哈希?

哈希 ​ 前言&#xff1a;大一大二就一直听说哈希哈希&#xff0c;但一直都没有真正的概念&#xff1a;What is 哈希&#xff1f;这篇博客就浅浅聊一下作者认知中的哈希。 理解哈希 ​ 哈希&#xff08;Hash&#xff09;也可以称作散列&#xff0c;实质就是一种映射&#xf…...

在Photoshop中如何校正倾斜的图片

在Photoshop中如何校正倾斜的图片呢&#xff1f;今天就教大家如何操作。 将需要操作的图片拉到PS软件中&#xff0c;自动形成项目。 点击上方“滤镜”中的“镜头校正”。 进入“镜头校正”窗口&#xff0c;点击左侧的“拉直工具”。文章源自设计学徒自学网-http://www.sx1c.co…...

Maven第六章:Maven的自定义插件开发

Maven第六章:Maven的自定义插件开发 前言 maven不仅仅只是项目的依赖管理工具,其强大的核心来源自丰富的插件,可以说插件才是maven工具的灵魂。本篇文章将对如何自定义maven插件进行讲解,希望对各位读者有所帮助。 Maven插件开发的基本概念 Maven插件是由Maven构建工具本身…...

深入解析RS485接口:从硬件设计到工业应用

1. RS485接口基础解析 第一次接触RS485时&#xff0c;我也被它复杂的电气特性搞得一头雾水。直到在工厂里亲眼看到它如何稳定地穿过嘈杂的电机区域传输数据&#xff0c;才真正理解这个老牌工业接口的魅力。RS485本质上是一种差分信号传输标准&#xff0c;采用双绞线进行平衡传…...

Python数据库操作终极指南:5分钟快速上手dataset轻松管理数据

Python数据库操作终极指南&#xff1a;5分钟快速上手dataset轻松管理数据 【免费下载链接】dataset Easy-to-use data handling for SQL data stores with support for implicit table creation, bulk loading, and transactions. 项目地址: https://gitcode.com/gh_mirrors/…...

嵌入式系统中的累加和校验算法原理与实现

1. 累加和校验算法概述在嵌入式系统开发中&#xff0c;数据通信的可靠性至关重要。想象一下&#xff0c;当你通过无线模块控制一台工业机器人时&#xff0c;如果传输的运动指令数据出现错误&#xff0c;可能导致机械臂做出完全不可预测的动作&#xff0c;轻则损坏产品&#xff…...

C++ 网络服务端主线:从线程池到 Reactor 的完整路线图

一、为什么要写这个系列&#xff1f; 前面我已经把 C 并发基础和线程池完整走了一遍&#xff1a; std::threadstd::mutexstd::condition_variablestd::atomic手写线程池future / 拒绝策略 / 优雅关闭 但到这里&#xff0c;其实还只停留在&#xff1a; 并发组件层 也就是说&a…...

别再怕凸优化!手把手教你估算二阶锥(SOC)和线性矩阵不等式(LMI)问题的计算量

凸优化实战指南&#xff1a;SOC与LMI问题计算量估算的工程化思维 在无线通信系统设计和信号处理算法开发中&#xff0c;工程师们经常需要面对各种优化问题。当论文中那些充满二阶锥&#xff08;SOC&#xff09;和线性矩阵不等式&#xff08;LMI&#xff09;的数学公式摆在面前…...

5分钟快速上手:UNTRUNC视频修复工具终极指南

5分钟快速上手&#xff1a;UNTRUNC视频修复工具终极指南 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 你是否曾经因为相机…...

实战教你用美股api获取实时行情与报价

前几天我在整理投资数据&#xff0c;突然发现自己平时关注的几支热门美股&#xff0c;价格波动比新闻还快。光靠网页刷新完全跟不上节奏&#xff0c;尤其是NVDA、META这样的科技股&#xff0c;几分钟就能有明显变化。想随时看到最新行情&#xff0c;又不想盯着网页刷新&#xf…...

STM32CubeMX项目实战:从新建工程到驱动LED,一步步教你玩转HAL库(附代码解析)

STM32CubeMX实战指南&#xff1a;HAL库驱动LED的底层逻辑与工程化思维 第一次打开STM32CubeMX时&#xff0c;那种面对密密麻麻的配置选项却不知从何下手的焦虑感&#xff0c;相信每位嵌入式开发者都记忆犹新。不同于传统寄存器操作的直白&#xff0c;HAL库和图形化配置工具带来…...

实战指南:借鉴vmware官网混合云方案,用快马平台生成高可用应用部署模板

今天在VMware官网上研究混合云方案时&#xff0c;发现他们的企业级架构设计特别值得借鉴。正好最近在用InsCode(快马)平台做项目部署&#xff0c;就尝试把官网的混合云方案转化成可落地的模板。整个过程比想象中顺利&#xff0c;分享下我的实战经验。 架构设计思路 VMware官网…...

猫抓插件:资源嗅探技术如何重塑浏览器媒体捕获体验

猫抓插件&#xff1a;资源嗅探技术如何重塑浏览器媒体捕获体验 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容爆炸的时代&#xff0c;网…...