码农知识堂 - 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:持久性

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

  • 相关阅读:
    Bootstrap实例(四)
    感冒了吃抗生素有用吗?
    26-Java访问者模式 ( Visitor Pattern )
    java基础之字节输入与输出流[48]
    数据结构——栈和队列
    关于如何找环形链表的入环点
    Mybatis-Plus官方分库分表神器,一个依赖轻松搞定!
    AUTOCAD——Excel表格导入CAD、CAD合并两兄弟
    想要提高客户留资率?一个留资机器人就够了!
    three.js调试工具dat.gui使用
  • 原文地址:https://blog.csdn.net/weixin_52385232/article/details/126077201
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号