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.rhkb.cn/news/85722.html

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

相关文章

LVS集群

目录 1、lvs简介: 2、lvs架构图: 3、 lvs的工作模式: 1) VS/NAT: 即(Virtual Server via Network Address Translation) 2)VS/TUN :即(Virtual Server v…

SAP Fiori 将GUI中的自开发报表添加到Fiori 工作台

1. 首先我们在workbench 中开发一个GUI report 这里我们开发的是一个简单的物料清单报表 2. 分配一个事务代码。 注意这里的SAP GUI for HTML 要打上勾 3. 创建语义对象( Create Semantic Object) 事物代码: path: SAP NetWeaver ->…

如何写一篇吸引人的新闻稿?揭秘新闻稿写作的技巧!

一篇高质量的新闻稿不仅能够吸引读者的眼球,还能提高文章的曝光量。下面,伯乐网络传媒将给大家揭秘新闻稿写作的十大技巧,帮助大家写出更有吸引力的新闻稿。 1. 选择热门而有吸引力的话题或爆点 要想写出一篇吸引人的新闻稿,首先…

SQL | 使用函数处理数据

8-使用函数处理数据 8.1-函数 SQL可以用函数来处理数据。函数一般是在数据上执行的,为数据的转换和处理提供了方便。 8.1.1 函数带来的问题 每种DBMS都有特定的函数,只有很少一部分函数,是被所有主要的DBMS等同的支持。 虽然所有的类型的…

『赠书活动 | 第十七期』《Python网络爬虫:从入门到实战》

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 『赠书活动 | 第十七期』 本期书籍:《Python网络爬虫:从入门到实战》 赠书规则:评论区:点赞|收…

ORA-04031

ORA-04031:unable to allocate 3264 bytes of shared memory 1、问题背景 修改SGA重启数据库后报错系统内存:8G 原SGA大小:3G 修改后SGA大小:5G数据库可以正常重启,但是trance日志一直在报错 2、解决办法 调整shared…

React入门学习笔记3

事件处理 通过onXxx属性指定事件处理函数(注意大小写) React使用的是自定义(合成)事件, 而不是使用的原生DOM事件——为了更好的兼容性 eg:οnclick》onClickReact中的事件是通过事件委托方式处理的(委托给组件最外层的元素)——为了更高效通过event.target得到发生…

ssh-keygen 做好免密登录后不生效

免密说明 通常情况下,我们ssh到其他服务器需要知道服务器的用户名和密码。对于需要经常登录的服务器每次都输入密码比较麻烦,因此我们可以在两台服务器上做免密登录,即在A服务器可以免密登录B服务器。 在A服务器上登录B服务器时,…

ssm+vue基于java的少儿编程网上报名系统源码和论文PPT

ssmvue基于java的少儿编程网上报名系统源码和论文PPT006 开发工具:idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具:navcat,小海豚等 开发技术:java ssm tomcat8.5 摘 要 在国家重视教育影响下,教育部门的密确配合下&#…

手动实现 Spring 底层机制 实现任务阶段一编写自己 Spring 容器-准备篇【2】

😀前言 手动实现 Spring 底层机制的第2篇 实现了任务阶段一编写自己 Spring 容器-准备篇【2】 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的…

HashMap 二十一问

1&#xff1a;HashMap 的数据结构&#xff1f; A&#xff1a;哈希表结构&#xff08;链表散列&#xff1a;数组链表&#xff09;实现&#xff0c;结合数组和链表的优点。当链表长度超过 8 时&#xff0c;链表转换为红黑树。transient Node<K,V>[] table; 2&#xff1a;…

c刷题(二)

目录 加减混合运算 计算n的k次方 计算非负整数各位之和 字符串逆序 双指针 递归 矩阵计算 矩阵转置 加减混合运算 题目&#xff1a;计算1 / 1 - 1 / 2 1 / 3 - 1 / 4 1 / 5 …… 1 / 99 - 1 / 100 的值&#xff0c;打印出结果。 一般情况我们可以写个循环然后在用条…

ROS Navigation Stack安装

Navigation导航包是做导航几乎都要用的&#xff0c;大家可以先去ROS Wiki上学习下 我们先Git下对应版本的软件包&#xff0c;我是Kinetic的&#xff0c;所以是Kinetic-devel 下载后发现目录下并没有CMakeLists.txt&#xff0c;所以直接在ROS工作目录下catkin_make并不会产生可…

并发编程面试题1

并发编程面试题1 一、原子性高频问题&#xff1a; 1.1 Java中如何实现线程安全? 多线程操作共享数据出现的问题。 锁&#xff1a; 悲观锁&#xff1a;synchronized&#xff0c;lock乐观锁&#xff1a;CAS 可以根据业务情况&#xff0c;选择ThreadLocal&#xff0c;让每个…

MuMu模拟器运行一段时间后Device.Present耗时突然上升

1&#xff09;MuMu模拟器运行一段时间后Device.Present耗时突然上升 2&#xff09;​如何在运行过程中获得温度信息 3&#xff09;Input System鼠标更换主按键的Bug 4&#xff09;如何禁止Unity向https://config.uca.cloud.unity3d.com发送设备信息 这是第347篇UWA技术知识分享…

【设计模式】模板模式

什么是模板模式&#xff1f; 模板方法模式&#xff08;Template Method Pattern&#xff09;&#xff0c;又叫模板模式(Template Pattern)&#xff0c;在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现&#xff0c;但调用将以抽象类中定义的方式进行…

Unity限制在一个范围内移动

Unity限制在一个范围内移动 这个例子中&#xff0c;我们学习Vector3.ClampMagnitude的用法&#xff0c;限制小球在范围内移动。 在地图上放了一个小球&#xff0c;让他移动&#xff0c;但是不想让他掉下去&#xff0c;限制在一个球星范围内&#xff0c;就好像绳子拴住了一样&…

【HTML】<input>

分类 text password number button reset submit hidden radio checkbox file image color range tel email&#xff08;火狐有校验&#xff0c;360浏览器无校验。&#xff09; url datetime&#xff08;火狐、360浏览器不支持&#xff09; search date、month、week、time、da…

1、Java简介+DOS命令+编译运行+一个简单的Java程序

Java类型&#xff1a; JavaSE 标准版&#xff1a;以前称为J2SE JavaEE 企业版&#xff1a;包括技术有&#xff1a;Servlet、Jsp&#xff0c;以前称为J2EE JavaME 微型版&#xff1a;以前称为J2ME Java应用&#xff1a; Android平台应用。 大数据平台开发&#xff1a;Hadoo…

自建机房还是选择云服务器?以腾讯云为例

大企业是选择自购服务器自建机房还是使用腾讯云服务器&#xff1f;都说企业上云是趋势&#xff0c;自建机房是一次性支出&#xff0c;上云租赁云服务器等产品需要年年续费&#xff0c;大型企业有必要把数据中心迁移上云吗&#xff1f;腾讯云服务器网想说&#xff0c;自建机房购…