MySQL_事务学习笔记

事务

  1. 注意:一定要使用 Innodb 存储引擎

  2. 概述:一组操作的集合,是不可分割的工作单元,会把一个部分当成一个整体来处理,事务会把操作同时提交或者是撤销。要么同时成功,要么同时失败。

  3. 比如:上云转账1000元给张三,第一,上云账户少1000,第二,张三账户多一千。
    在这里插入图片描述

事务操作

  1. 数据准备

    drop table if exists account; 
    #创建账户信息表
    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 ('上云',4000), ('张三',4000);
    

未控制事务演示

  1. 正常转账的情况下

    #正常转账的情况下
    select * from account;#减少上云账户上的1000元
    update account set money = money -1000 where name = '上云'; 
    #增加张三账户上的1000元
    update account set money = money + 1000 where name = '张三';
    

在这里插入图片描述

  1. 异常转账的情况下

    select * from account;update account set money = 4000;update account set money = money -1000 where name = '上云'; 出错了update account set money = money + 1000 where name = '张三';
    

控制事务方式1

  1. 查看事务提交方式

    SELECT @@autocommit1:自动提交
    0:手动提交
    
  2. 设置事务提交方式

    set @@autocommit=0;#设置成手动提交
    
  3. 提交事务

    commit;
    
  4. 回滚事务

    rollback;
    

控制事务方式2

  1. 开启事务

    start transaction 或者 begin;
    
  2. 提交事务

    commit;
    
  3. 回滚事务

    rollback;
    

事务的作用对象

  1. 只能回滚 insert、delete 和 update 语句,不能回滚 select(回滚 select 没有任何意义),对于
    create、drop、alter 这些无法回滚.

事务的四大特征(ACID)

  1. 原子性(Atomicity):整个事务中的所有操作,必须作为一个单元全部完成(或全部取消)不可分割,要么全部成功,要么全部失败
  2. 一致性(Consistency)事务完成时,数据保持一致状态
  3. 隔离性(Isolation):数据库会提供隔离机制,并发不会相互影响和干扰,一个事务不会影响其他事务的运行
  4. 持久性(Durability):在事务完成以后,该事务对数据库所作的更改将持久地保存在数据库之中,并不会被回滚。

并发事务的问题(面试经常问)

  1. 脏读:一个事务读到另外一个事务还没有提交的数据
    • 事务B读取到事务A还没有提交的数据
      在这里插入图片描述
  2. 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
    • 事务A两次读取同一条数据,但是读取到的数据不一样
      在这里插入图片描述
  3. 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 “幻影”。
    在这里插入图片描述

事务的隔离级别

在这里插入图片描述

  1. 注意:隔离级别越高,数据越安全,但是性能低。需要在性能和安全之间进行取舍。

  2. 查看隔离级别:

    SELECT @@TRANSACTION_ISOLATION;
    

    在这里插入图片描述

  3. 设置隔离级别

    SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
    
    • 隔离级别分为全局的和会话级的

      • 全局的:对所有会话有效(global)
      • 会话级的:只对当前的会话有效(session)

      在这里插入图片描述

演示

  1. 脏读(read uncommitted 未提交读)

    会话1会话2
    use transaction;use transaction;
    set global transaction isolation level read uncommitted;
    start transaction;
    start transaction;
    insert into account values(2,‘sy’,100);
    select * from account;
    rollback;
    select * from account;
  2. read committed(已提交读)

    会话1会话2
    set global transaction isolation level read committed;
    start transaction;
    start transaction;
    insert into account values(2,‘sy’,100);
    select * from account;
    select * from account;(不能查询出数据)
    commit;
    select * from account;(查询出数据)
  3. repeatable read(可重复读)

    会话1会话2
    set global transaction isolation level repeatable read;
    start transaction;
    start transaction;
    insert into account values(3,‘xxxxy’,100);
    select * from account(读不出来)
    commit;
    select * from account(能读出来)

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

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

相关文章

ESG撑不起波司登的“出海野心”

文 | 螳螂观察 作者 | 青月 ESG(环境、社会和企业治理)这把“火”,烧的是越来越“旺”了。 在“双碳”目标和市场的双重驱动下,各大企业这几年都不约而同的开始关注起ESG,特别是在二级市场上,不少上市公…

竞赛项目 深度学习的水果识别 opencv python

文章目录 0 前言2 开发简介3 识别原理3.1 传统图像识别原理3.2 深度学习水果识别 4 数据集5 部分关键代码5.1 处理训练集的数据结构5.2 模型网络结构5.3 训练模型 6 识别效果7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习…

Die2Die(D2D)和chip2chip(C2C)之间的高速互联接口

随着chiplet的兴起,Die2Die的高速互联越来越重要,相比于传统的C2C(chip2chip)的互联,D2D的片间距离很近(10mm量级),且这些小的chip(裸片)最终形成一个封装【多芯片模块(MCM)】。所以D2D的互联信道短&#x…

什么是Selenium?使用Selenium进行自动化测试

什么是 Selenium?   Selenium 是一种开源工具,用于在 Web 浏览器上执行自动化测试(使用任何 Web 浏览器进行 Web 应用程序测试)。   等等,先别激动,让我再次重申一下,Selenium 仅可以测试We…

如何将视频转换成音频mp3格式?试一下这几种转换方法

MP3格式是一种被广泛使用的音频格式,可以在几乎所有音频播放器和设备上播放。此外,由于视频文件通常包含大量图像信息,因此其文件大小通常比相应的音频文件要大得多。将视频转换为MP3格式音频可以大大减小文件大小,从而节省硬盘空…

深兰科技熊猫汽车牵手首恒出行,人工智能技术提升商用车运营服务

8月8日,深兰科技集团旗下熊猫新能源汽车(上海)有限公司(下称熊猫新能源汽车)与河南首恒出行服务有限公司(下称首恒出行)在深兰科技总部举行签约仪式,首恒出行将向熊猫新能源汽车年定向采购10000台商用车,双方将在汽车后市场领域进行技术合作。…

使用公式与格式控制Excel快速实现计划甘特图

项目中都会遇到做任务计划的需求,有的客户要求需要有甘特图的形式本文介绍如何使用excel 单元格实现甘特图显示,调整任务时间自动填充单元格填色实现甘特图效果。废话不多说,先看效果。 准备工作先创建两列开始时间与完成时间,这…

使用KETTLE工具在Oracle和Dm8之间迁移数据

oracle 代码测试数据 CREATE TABLE PRODUCT_CATEGORY ( PRODUCT_CATEGORYID NUMBER(11,0) NOT NULL , NAME VARCHAR2(255) NOT NULL ENABLE, PRIMARY KEY (PRODUCT_CATEGORYID) )INSERT ALL into PRODUCT_CATEGORY(PRODUCT_CATEGORYID, NAME)VALUES(2,国学) into PRODUCT_CATEG…

uni——不规则tab切换(skew)

案例展示 案例代码 <!-- 切换栏 --> <view class"tabBoxs"><view class"tabBox"><block v-for"(item,index) in tabList" :key"index"><view class"tabItem":class"current item.id&…

华为新版ENSP PRO模拟器测评:性能表现与功能扩展一览

一、引言 在网络领域不断涌现的新技术和复杂的网络拓扑要求&#xff0c;推动了网络设备模拟器的持续发展和创新。华为作为一家领先的通信技术解决方案提供商&#xff0c;不断致力于为网络工程师和技术从业人员提供更优秀的仿真环境。最近&#xff0c;华为推出了ensp pro模拟器的…

Vue+SpringBoot项目开发:后台登陆功能的实现(二)

写在开始:一个搬砖程序员的随缘记录文章目录 一、SpringBoot项目的搭建二、数据库配置1、新建数据库2、新建用户表 三、SpringBoot项目的配置 一、SpringBoot项目的搭建 项目搭建传送门&#xff1a;从零开始&#xff0c;SpringBoot项目快速搭建 二、数据库配置 1、新建数据库…

通过Easy Excel导入数据

目录 &#x1f351;一、背景&#x1f351;二、开发验证&#x1f34a;2.1、引入easyexcel依赖&#x1f34a;2.2、创建表及基础代码&#x1f34a;2.3、处理类及接口&#x1f353;2.3.1、EasyExcel监听处理器&#x1f353;2.3.2、Controller接口&#x1f353;2.3.3、service调用监…

字节跳动推出公共DNS服务,将支持 DoH/DoT/DoQ 等协议

近日&#xff0c;字节跳动旗下的火山引擎正式上线 TrafficRoute 解析调度套件&#xff0c;其实质就是一套“公共 DNS”服务&#xff0c;目前仅支持免费版。该 DNS 后续将提供 DoH、DoT 和 DoQ 加密 DNS 查询协议。 火山引擎公共解析&#xff08;PublicDNS&#xff09;产品介绍&…

LeetCode算法递归类—验证二叉搜索树

目录 98. 验证二叉搜索树 题解&#xff1a; 代码&#xff1a; 运行结果&#xff1a;​编辑 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含…

Android Animation Made Easy

原文链接 Android Animation Made Easy 动画在任何一个GUI系统中都是一个非常重要的设计元素&#xff0c;它可以让交互变得优雅&#xff0c;让界面变得炫酷&#xff0c;让操作变得更加的舒畅&#xff0c;让状态过渡变得更加的顺滑&#xff0c;对视觉效果有极大的提升&#xff…

Android Retrofit 源码分析

一、retrofit 是什么&#xff1f; Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。 网络请求的工作本质上是 OkHttp 完成&#xff0c;而 Retrofit 仅负责 网络请求接口的封装。 1&#xff09;App应用程序通过 Retrofit 请求网络&#xff0c;实际上是使用 Retrofit 接口…

小红书投放流程是什么,达人选择注意事项!

很多人会发现有些笔记的内容并不是很出彩&#xff0c;但是偏偏就火了&#xff0c;自己想去模仿就平平无奇&#xff0c;其中包含了很多因素&#xff0c;有运气、也有选题和博主发文思路在里面&#xff0c;今天&#xff0c;来和大家分享下小红书投放流程是什么&#xff0c;达人选…

K8s环境下监控告警平台搭建及配置

Promethues是可以单机搭建的&#xff0c;参考prometheus入门[1] 本文是就PromethuesGrafana在K8s环境下的搭建及配置 Prometheus度量指标监控平台简介 启动minikube minikube start 安装helm 使用Helm Chart 安装 Prometheus Operator: helm install prometheus-operator stabl…

flask-migrate使用

1.介绍 # 表,字段发生变化&#xff0c;都会有记录&#xff0c;自动同步到数据库中--》django支持这种操作 # 原生的sqlalchemy&#xff0c;不支持修改表的 # flask-migrate可以实现类似于django的 python manage.py makemigrations #记录 python manage.py migrate …

本地跑Mapreduce程序的相关配置

本地跑MapReduce程序需要配置的代码 为了在本地运行MapReduce程序&#xff0c;需要加如下的东西 在项目中创建一个如图所示的包&#xff1a;org.apache.hadoop.io.nativeio&#xff0c;并在该包下面创建一个名为&#xff1a;NativeIO的类&#xff08;注意&#xff1a;名字不能…