码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 事务(1)


    目录

    事务(重点:五颗星*****,必须理解,必须掌握)

    1. 什么是事务?

    什么是一个完整的业务逻辑?

    2. 只有DML语句才会有事务这一说,其它语句和事务无关!

    3. 对事务的理解

    3.1 假设所有的业务,只要一条DML语句就能完成,还有必要存在事务机制吗?

    3.2 到底什么是事务呢?

    4. 事物是如何实现的?

    4.1 事务是怎么做到多条DML语句同时成功或者同时失败的呢?

    4.2 在事务的执行过程中,我们可以提交事务,也可以回滚事务。

    5. 怎么提交和回滚事物?

    5.1 mysql默认情况下是支持自动提交事务的。(自动提交)

    5.2 怎么将mysql的自动提交事务机制关闭掉呢?

    5.3 演示事务

    6. 事务的4个特性


    事务(重点:五颗星*****,必须理解,必须掌握)

    1. 什么是事务?

    • 一个事务其实就是一个完整的业务逻辑。
    •  事物是一个最小的工作单元。不可再分。

    什么是一个完整的业务逻辑?

    假设转账,从A账户向B账户中转账10000.
    将A账户的钱减去10000(update语句)
    将B账户的钱加上10000(update语句)
    这就是一个完整的业务逻辑。

    以上的操作是一个最小的工作单元,要么同时执行成功,要么同时执行失败,不可再分。

    这两个update语句要求必须同时执行成功或者同时执行失败,这样才能保证钱是正确的。

    2. 只有DML语句才会有事务这一说,其它语句和事务无关!

    • insert
    • delete
    • update
    • 只有以上的三个语句和事务有关系,其它都没有关系。

    因为只有以上的三个语句是对数据库表中的数据进行增、删、改的。只要你的操作一旦涉及到数据的增、删、改,那么就一定要考虑安全问题。数据安全第一位!!!

    3. 对事务的理解

    3.1 假设所有的业务,只要一条DML语句就能完成,还有必要存在事务机制吗?

    正是因为做某件事的时候,需要多条DML语句共同联合起来才能完成,所以需要事务的存在。如果任何一件复杂的事儿都能一条DML语句搞定,那么事务则没有存在的价值了。

    3.2 到底什么是事务呢?

    说到底,说到本质上,一个事务其实就是多条DML语句同时执行成功,或者同时执行失败!

    4. 事物是如何实现的?

    4.1 事务是怎么做到多条DML语句同时成功或者同时失败的呢?

    InnoDB存储引擎:提供一组用来记录事务性活动的日志文件

    事务开启了:
    insert
    insert
    insert
    delete
    update
    update
    update
    事务结束了!

    在事务的执行过程中,每一条DML的操作都会记录到“事务性活动的日志文件”中。

    4.2 在事务的执行过程中,我们可以提交事务,也可以回滚事务。

    提交事务?

    • 将数据全部彻底持久化到数据库表当中,并且清空事务性活动的日志文件
    • 提交事务标志着事务的结束。并且是一种全部成功的结束。

    回滚事务?

    • 将之前所有的DML操作全部撤销,并且清空事务性活动的日志文件
    • 回滚事务标志着事务的结束。并且是一种全部失败的结束。

    5. 怎么提交和回滚事物?

    commit:提交

    rollback:回滚

    • transaction:事物
    • 提交事务:commit; 语句
    • 回滚事务:rollback; 语句(回滚永远都是只能回滚到上一次的提交点!)

    5.1 mysql默认情况下是支持自动提交事务的。(自动提交)

    什么是自动提交?

    • 每执行一条DML语句,则提交一次!

    这种自动提交实际上是不符合我们的开发习惯,因为一个业务通常是需要多条DML语句共同执行才能完成的,为了保证数据的安全,必须要求同时成功之后再提交,所以不能执行一条就提交一条。

    5.2 怎么将mysql的自动提交事务机制关闭掉呢?

    • 先执行这个命令:start transaction;

    5.3 演示事务

    5.3.1 回滚事务



    5.3.2 提交事务

    6. 事务的4个特性

    6.1  A:原子性

    • 说明事务是最小的工作单元。不可再分。

    6.2  C:一致性

    • 所有事务要求,在同一个事务当中,所有操作必须同时成功,或者同时失败,以保证数据的一致性。

    6.3  I:隔离性

    • A事务和B事务之间具有一定的隔离。
    • 例如:教室A和教室B之间有一道墙,这道墙就是隔离性。
    • 例如:A事务在操作一张表的时候,另一个事务B也在操作这张表的时候会怎么样?

    6.4  D:持久性

    • 事务最终结束的一个保障。
    • 事务提交,就相当于将没有保存到硬盘上的数据保存到硬盘上!

  • 相关阅读:
    python下拉框选择测试
    【vue2第十四章】 插槽(普通插槽、具名插槽、作用域插槽语法)
    Eclipse 实现 Java 编辑器【一】(制作GUI界面)
    minio文件上传的学习使用
    华为云云耀云服务器L实例评测|测试CentOS的网络配置和访问控制
    【工具-Nginx】从入门安装到高可用集群搭建
    react之Component存在的2个问题
    Redis缓存穿透问题的解决思路
    JavaSE 第八章 Java常用类 之 String&StringBuffer&StringBuilder
    8 张图 | 剖析 Eureka 的首次同步注册表
  • 原文地址:https://blog.csdn.net/weixin_52385232/article/details/126077201
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号