【 第六章 事务操作、事务四大特性、并发事务问题、事务隔离级别】

news2024/9/21 17:57:58

第六章 事务操作、事务四大特性、并发事务问题、事务隔离级别

1.事务简介:
①事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
②注意: 默认MySQL的事务是自动提交的,也就是说,当执行完一条DML语句时,MySQL会立即隐式的提交事务。
2.事务操作:
数据准备:

use itcast;
create table account(
id int primary key AUTO_INCREMENT comment 'ID',
name varchar(10) comment '姓名',
money double(10,2) comment '余额'
) comment '账户表';
insert into account(name, money) VALUES ('张三',2000), ('李四',2000);

在这里插入图片描述
①未控制事务:
测试正常情况:

-- 1. 查询张三余额
select * from account where name = '张三';
-- 2. 张三的余额减少1000
update account set money = money - 1000 where name = '张三';
-- 3. 李四的余额增加1000
update account set money = money + 1000 where name = '李四';

②控制事务一:

(1)查看/设置事务提交方式
SELECT @@autocommit ;
SET @@autocommit = 0 ;#自动提交为1,手动提交为0
(2)提交事务
COMMIT;
(3)回滚事务
ROLLBACK;
注意:上述的这种方式,我们是修改了事务的自动提交行为, 把默认的自动提交修改为了手动提交, 此时我们执行的DML语句都不会提交, 需要手动的执行commit进行提交。

③控制事务二:

(1)开启事务
START TRANSACTIONBEGIN ;
(2)提交事务
COMMIT;
(3)回滚事务
ROLLBACK;

3.事务四大特性:
①原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
②一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
③隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立
环境下运行。
④持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
上述就是事务的四大特性,简称ACID。
4.并发事务问题:
①赃读:一个事务读到另外一个事务还没有提交的数据。比如B读取到了A未提交的数据。
在这里插入图片描述
②不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。事务A两次读取同一条记录,但是读取到的数据却是不一样的。
在这里插入图片描述
③幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 “幻影”。
在这里插入图片描述5.事务隔离级别:
在这里插入图片描述

(1)查看事务隔离级别
SELECT @@TRANSACTION_ISOLATION; 
(2)设置事务隔离级别
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | /READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
注意:事务隔离级别越高,数据越安全,但是性能越低。

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

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

相关文章

Kafka - 13 Java 客户端实现消费者消费消息

文章目录1. 独立消费者案例(订阅主题)2. 独立消费者案例(订阅分区)3. 消费者组案例1. 独立消费者案例(订阅主题) 需求:创建一个独立消费者,消费主题中数据: [roothadoo…

Linux系统移植三:移植Kernel生成zImage和dtb文件

Linux系统移植系列 Linux系统移植一:移植U-BOOT 添加自己的板子并编译(非petalinux版) Linux系统移植二:生成fsbl引导文件并制作BOOT.bin 下载源码包 Xilinx官方linux源码包下载地址:https://github.com/Xilinx/lin…

linux+window+macos下的JDK安装

1. Linux中安装JDK (1)下载Linux版本的jdk压缩包 (2)解压 tar -zxvf 压缩包名 例如: tar -zxvf jdk-8u251-linux-x64.tar.gz(3)在系统配置文件配置java 编辑profile配置文件 vim /etc/prof…

JVM Metaspace内存溢出问题

更多内容,前往 IT-BLOG 一、现象 x项目线上环境因为jvm报OOM的异常而报警,导致整个服务不可用并被拉出集群,现象如下: 当时的解决方案是增加metaspace的容量: -XX:MaxMetaspaceSize512m, 从原来默认的256m改为512m, 虽然没有再出现oom,但这个只是临时解决方案,通过…

MyBatis ---- 动态SQL

MyBatis ---- 动态SQL1. if2. where3. trim4. choose、when、otherwise5. foreach6. SQL片段MyBatis 框架的动态 SQL 技术是一种根据特定条件动态拼接 SQL 语句的功能,它存在的意义是为了解决拼接 SQL 语句字符串时的痛点问题。 1. if /*** 根据条件查询员工信息if…

eBPF书籍和教程良心推荐

中文 BPF 性能工具(书籍),作者 Brendan Gregg。本书的GitHub 回购。系统性能:企业与云,第 2 版 (2020),作者:Brendan GreggJed Salazar 和 Natalia Reka Ivanko 的 eBPF 安全可观察性什么是 eB…

Metabase学习教程:系统管理-5

仪表板优化 如何使您的仪表板加载更快。 说到仪表板性能方面,基本上有四种方法可以让仪表板更快地加载: 要求更少的数据.缓存问题答案.组织数据以预测常见问题.提出有效的问题。图1。包含三个筛选器小部件的示例仪表板,它们使用Metabase附…

友宝在线在港交所上市申请“失效”:连续两年亏损,王滨为大股东

近日,贝多财经从港交所披露易了解到,Beijing UBOX Online Technology Corp.(北京友宝在线科技股份有限公司,下称“友宝”或“友宝在线”)的上市申请材料已经失效,目前已经无法查看。 其中,招股书…

期末前端web大作业:餐饮美食网站设计与实现——餐厅响应式网站制作html+css+javascript+jquery+bootstarp

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Android开发的UI设计——Material Design

前言 Material Design 是用于指导用户在各种平台和设备上进行视觉、动作和互动设计的全面指南。如需在您的 Android 应用中使用 Material Design,请遵循 Material Design 规范中定义的准则,并使用 Material Design 支持库中提供的新组件和样式。 正篇 …

【软件安装】Ubuntu18.04及20.04中安装omnet++

注意:安装omnet首先看官方安装指导,不要直接百度。 omnet6.0.1官方安装指导omnet6.0只能在Ubuntu20.04及之后的版本使用,因为glibc版本不适配。 Ubuntu18.04安装omnet5.6.2 安装必要支持 更新apt-get $ sudo apt-get update安装依赖软件 $ s…

2022年四川省职业院校技能大赛网络搭建与应用赛项

2022年四川省职业院校技能大赛 网络搭建与应用赛项 (一) 技能要求 (总分1000分) 网络搭建与应用赛项执委会及专家组 2022年06月 竞赛说明 一、竞赛内容分布 “网络搭建与应用”竞赛共分三个部分,其中: 第一…

3个常用的损失函数

1. L2 loss (均方损失) 除以2就是可以在求导时2和1/2可以相乘抵消。 蓝色的曲线表示:y0时,变化预测值y’的函数。 绿色曲线表示:似然函数。e^-l。 是一个高斯分布。 橙色的线:表示损失函数的梯度 可以看到…

记录Windows下mysql更改my.ini文件中datadir路径后启动不起来的问题

1.mysql默认安装到了C盘,想将数据库存储路径改到别的盘下 将Data文件夹和日志复制到H盘 找到mysl服务,右键停止服务 更改my.ini文件中的路径 保存然后启动发现启动不起来 猜测原因1:文件夹没有权限 将文件夹权限给到所有的用户 右击 ”…

[附源码]Python计算机毕业设计Django青栞系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Linux的进程创建

在Linux下面,对二进制程序有着严格的格式要求,这就是ELF,这个格式可以根据编译的结果不同,分为不同的格式。 ELF的三种类型 一:可重定位文件 在编译的时候,先做预处理工作,例如将头文件嵌入到…

VueX简单又详细的解读,看了就会用

一、VueX是什么 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 二、为什么要用VueX “单向数据流”理念的简单示意: 当我们的应用遇到多个组…

Redis缓存

一.简介 缓存就是数据交换的缓冲区(称作Cache [ kʃ ] ),是存贮数据的临时地方,一般读写性能较高 二.添加Redis缓存 三.缓存更新策略 1.主动更新策略 Cache Aside Pattern(推荐) 需要调用者自己编码,但可控性高 Re…

SimSiam-Exploring Simple Siamese Pepresentation Learning

SimSiam Abstract 模型坍塌,在siamese中主要是输入数据经过卷积激活后收敛到同一个常数上,导致无论输入什么图像,输出结果都能相同。 而He提出的simple Siamese networks在没有采用之前的避免模型坍塌那些方法: 使用负样本lar…

K_A08_003 基于 STM32等单片机驱动L9110模块按键控制直流电机正反转加减速启停

目录 一、资源说明 二、基本参数 1、参数 2、引脚说明 三、驱动说明 L9110模块驱动时序 对应程序: PWM信号 四、部分代码说明 接线说明 1、STC89C52RCL9110模块 2、STM32F103C8T6L9110模块 五、基础知识学习与相关资料下载 六、视频效果展示与程序资料获取 七、项目主要…