【MySQL】事务(中)

文章目录

  • 事务异常与产出结论
    • 手动提交 和自动提交 对 回滚的区别
  • 事务隔离性理论
    • 如何理解隔离性?
    • MySQL的隔离级别
    • 事务隔离级别的查看
    • 设置隔离级别

事务异常与产出结论

在没有启动事务之前,account表中存在孙权和刘备的数据


在启动事务后, 向 account表中 插入 曹操数据
输入 CTRL \ 终端1中的客户端 崩溃掉
此时在终端2中 查看 表中数据,发现启动事务后插入的曹操数据没有了

说明客户端崩溃,MySQL会自动回滚


手动提交 和自动提交 对 回滚的区别

输入 set autocommit=0 将提交方式改变
再输入 show variables like ‘autocommit’ 查询当前提交方式
OFF 表示 将 自动提交关闭


启动事务之前,account表中 有两个数据
启动事务之后,删除表中曹操的数据
在客户端崩溃后,再次查询 发现 数据会 进行了回滚,将曹操的数据恢复回来了


输入 show variables like ‘autocommit’ 查询提交方式
ON 表示 将 自动提交打开


在启动事务之前,account表中 存在 孙权 刘备 赵六 三个数据
在启动事务之后,删除 对应的赵六的数据
若此时客户端崩溃,则 刘备数据直接丢失了


所以 autocommit 的 提交方式 是会 影响 单个sql的(由于单个sql 也可看作事务,所以就会可以看作影响事务)

事务隔离性理论

如何理解隔离性?

所有事务都要有执行过程 ,那么在 多个事务 各自执行多个SQL的时候,就有有可能出现相互影响的情况
比如:你妈妈跟你说 ,那么就别学,要学就学到最好,至于你的学习过程,你妈妈是不关心
你的学习,对于你妈来说就是原子
因为在学习过程中,是很容易受到干扰的,所以就需要将你的学习环境隔离开,保证你的学习环境是良好的


中国是有很多 为中国崛起 奋斗的先烈们,但是这些先烈 是看不到 现在 世界的样子的
在 很久之前 就已经 因为 某种 原因 过世了
说明 任何一个人 不一定 要看到 最新的世界,也不一定 要 看到比较老的世界,只要看到在自己生命周期之内的事情即可
(如:我们无法去未来 世界 感觉, 也无法 回到 清朝 去感觉,只需关心当下世界发生的变化即可)


出生的时间点不同,死亡的时间点不同,每个人看到的样貌就不一样

同理 让每一个事务 让其在到来时,看到它所应该看到的数据, 这个过程 称为 隔离性


再比如: 假设查找比较久,而转账很快, 你的朋友先转账,然后你才去查找
先转帐,说明转账来到比较早,原子级别上转账 执行就应该在查找前面
转账 和 查找 两者 事务 同时 进行 ,此时即便 转账做完了 ,你(查找)也不应该看到


MySQL的隔离级别

在此主要是简单点介绍下,后面会详细说


读未提交
当一个事务 在运行 ,另一个 事务 也在运行,这两个事务 在执行过程之中 就可以看作是 并发在运行

输入 select @@tx_isolation 查询隔离级别
发现是 隔离级别为 读未提交


刚开始account表中有两个数据,当终端1启动事务后 进行删除数据
终端1并没有提交数据,而终端2就可以在表中查到 数据没有了
当终端1客户端崩溃了,终端2就能把删除的数据进行回滚
说明一个事务对数据进行修改,另一个事务立马能看到


读提交

刚开始account表中有三个数据,当终端1启动事务后 进行将id值为3的数据name修改为 zhangsan
终端1并没有提交数据时,终端2查询表中数据没有变化
当终端1客户端进行提交了,在终端2中 再次查询就可以看到 修改后的数据

只能当 一个事务 进行 commit 之后, 另一个事务 才能看到修改后的数据


可重复读

是MySQL默认的隔离级别
事务1 将表的数据删除 或 提交,事务2 都是看不到的表的变化 ,直到事务2也提交,才可以看到表的变化

如:有两个小孩 进行潜水,要想知道对方是否上岸,就需要浮到水面上


串行化
事务最高的隔离级别

必须按照到来的事件顺序,一个一个的执行,执行完了一个才进行下一个
就可以保证数据的绝对安全

事务隔离级别的查看

查看隔离级别共有三种方法


第一种方法:select @@global.tx_isolation;
查看全局隔离级别
(进行更改,会影响后续所有客户端的登录)


第二种方法:select @@session.tx_isolation;
查看 会话 全局隔离级别
(进行更改,只会影响会话)


第三种方法: select @@tx_isolation;

第三种方法是第二种方法的简写,两者的作用相同


设置隔离级别

SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ
COMMITTED | REPEATABLE READ | SERIALIZABLE}

session和global 两者选一个,不要省略
transaction 称为 事务
isolation 称为 隔离
level 称为 级别
read uncommitted 称为 读未提交
read committed 称为 读提交
repeatable read 称为 可重复读
serializable 称为 串行化


在终端1中,将会话的隔离级别 设置为 读 提交


输入 select @@global.tx_isolation; 查询全局的隔离级别
发现全局的隔离级别没有变化


输入 select @@session.tx_isolation; 查询会话的隔离级别
发现会话的隔离级别 变为 读提交


在终端2中 查询全局隔离级别和 会话隔离级别
发现全局隔离级别和会话隔离级别 都是 读未提交 都没有受影响
说明会话隔离级别 只能影响 当前会话
(在终端1中修改会话,则会话受到影响,而终端2中的会话不受影响)


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

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

相关文章

【LIUNX】配置缓存DNS服务

配置缓存DNS服务 A.安装bind bind-utils1.尝试修改named.conf配置文件2.测试nslookup B.修改named.conf配置文件1.配置文件2.再次测试 缓存DNS服务器:只提供域名解析结果的缓存功能,目的在于提高数据查询速度和效率,但是没有自己控制的区域地…

洛谷P1923 【深基9.例4】求第 k 小的数(java)

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; import java.util.Arrays; import java.util.Scanner; //输入n个数字ai,输出这些数字的第k小的数。最小的数是第0小。 public cla…

高级数据分析方法与模型

前言 数据思维练习不仅要熟练地掌握了分析工具,还要掌握大量的数据分析方法和模型。 这样得出的结论不仅具备条理性和逻辑性,而且还更具备结构化和体系化,并保证分析结果的有效性和准确性。今天从以下6个维度36种分析模型和方法逐个简略介绍…

工作记录--(用HTTPS,为啥能被查出浏览记录?如何解决?)---每天学习多一点

由于网络通信有很多层,即使加密通信,仍有很多途径暴露你的访问地址,比如: DNS查询:通常DNS查询是不会加密的,所以,能看到你DNS查询的观察者(比如运营商)是可以推断出访问…

【蓝桥杯选拔赛真题67】Scratch鹦鹉学舌 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch鹦鹉学舌 一、题目要求 编程实现 二、案例分析 1、角色分析

(三)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

4.CentOS7安装MySQL5.7

CentOS7安装MySQL5.7 2023-11-13 小柴你能看到嘛 哔哩哔哩视频地址 https://www.bilibili.com/video/BV1jz4y1A7LS/?vd_source9ba3044ce322000939a31117d762b441 一.解压 tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz1.在/usr/local解压 tar -xvf mysql-5.7.44-…

高速高精运动控制,富唯智能AI边缘控制器助力自动化行业变革

随着工业大数据时代的到来,传统控制与决策方式无法满足现代数字化工厂对工业大数据分析与决策的需求,AI边缘控制器赋能现代化智慧工厂,实现工业智造与行业变革。 富唯智能AI边缘控制器,基于x86架构的IPC形态产品,通过…

用Powershell实现:删除所有不是与.json文件重名的.jpg文件

# 指定要搜索的目录路径 $directoryPath "C:\path\to\your\directory"# 获取该目录下的所有.jpg和.json文件 $jpgFiles Get-ChildItem -Path $directoryPath -Filter *.jpg $jsonFiles Get-ChildItem -Path $directoryPath -Filter *.json | Select-Object -Expan…

对于联邦政府来说,零信任只是一个开始

今年早些时候,美国空军国民警卫队的一名拥有绝密安全许可的成员向社交媒体平台 Discord 泄露了国家安全文件。 据报道,这些文件迅速传播到其他平台,其中包含有关美国和北约在俄罗斯军事行动的敏感信息,包括有关预期武器交付的详细…

2023年汽车驾驶员(高级)证考试题库及汽车驾驶员(高级)试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年汽车驾驶员(高级)证考试题库及汽车驾驶员(高级)试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(…

软件测试开发环境、测试环境、准生产环境、生成环境

在一个项目开发到发布的整个过程中,会使用到很多个环境进行测试和运行项目。最基本的开发环境、测试环境、准生产环境、生成环境 一、开发环境 开发环境顾名思义就是我们程序猿自己把项目放到自己的电脑上,配置好以后,跑起来项目&#xff0…

SpringCloud微服务:服务拆分

不同的数据库之间,如何共同调用?接下来讲讲两个数据库之间如何交互 1、微服务需要根据业务模块拆分,做到单一职责,不要重复开发相同业务 2、微服务可以将业务暴露为接口,供其它微服务使用 3、不同微服务都应该有自己独立的数据库…

(四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖…

【赠书第4期】机器学习与人工智能实战:基于业务场景的工程应用

文章目录 前言 1 机器学习基础知识 2 人工智能基础知识 3 机器学习和人工智能的实战案例 4 总结 5 推荐图书 6 粉丝福利 前言 机器学习与人工智能是当前最热门的领域之一,也是未来发展的方向。随着科技的不断进步,越来越多的企业开始关注和投入机…

哈希的介绍及开散列和闭散列的实现(c++)

本文主要对哈希的相关知识进行一定的介绍,并对哈希中结构的闭散列和开散列进行一定的介绍和部分功能的实现。 目录 一、哈希概念 二、哈希冲突 三、哈希函数 1. 直接定址法--(常用) 2. 除留余数法--(常用) 3. 平方取中法 4. 折叠法 5. 随机数法 6. 数学分析…

使用python批量修改图片名称

一、使用场景 修改模式:原图片名称.png 》 目标图片名称.png条件:目标图片名称 包含 原图片名称准备工作:目标图片名称填写在excel当中,把excel放进图片文件夹内 二、代码示例 import os import pandas as pd import numpy as …

C++ 11 新特性

目录 1. 支持特性的编译器版本2. 模板表达式中空格3. 空指针4. auto5. 统一初始化6. explict7. 范围for8. default,delete9. 化名模板(alias template)10. using11. noexcept12. override13. final14. decltype15. lambda16. Variadic Templa…

3个ui自动化测试痛点

当我们找工作的时候查看招聘信息发现都需要有自动化测试经验,由此看来测试人员不会一点自动化测试技术都不好意思说自己是做软件测试的。大部分测试人员也都是从使用自动化测试工具、录制回放、测试脚本、开发小工具入门自动化测试的,然后在慢慢的接触 U…

Ubuntu中安装R语言环境并在jupyter kernel里面增加R kernel

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…
最新文章