码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 干货 | 认识数据库事务


    Atomicity Consistency Isolation Durability(原子性、一致性、隔离性、持久性),或称(ACID),由 Andreas Reuter 于 1983 年提出。它是数据库管理系统(DBMS)中的一个概念,它标识了一组用于保证数据库可靠性的标准属性。ACID 属性可确保所有数据库事务保持准确且一致,并支持从处理操作期间可能发生的故障中恢复。因此,几乎所有关系数据库都实现了它。

    事实证明,为事务提供支持的 DBMS 会自动强制实施四个 ACID 属性。在今天的文章中,我们将学习事务如何做到这一点。在即将发表的文章中,我们将研究如何在存储过程中使用事务来防止数据不一致。

    事务的说明

    在存储过程中使用事务之前,了解什么是事务可能对我们有帮助。简而言之,事务是执行的一组操作,它保证所有操作是作为一个单元執行成功或執行失败。

    例如,我们将钱从支票帐户转移到储蓄帐户。这个动作实际上由两部分组成:

    • 从支票帐户中提取资金。
    • 将资金存入储蓄帐户。

    现在,想象一下如果第一步之后停电了会发生什么。如果从支票帐户中扣除了资金但未将其添加到储蓄帐户中,我认为我们都同意那是一个问题!正如你不希望在财务交易中发生这种情况一样,我们也不希望更新一个数据库表而没有更新引用它的表。通过使用事务,可以保证两个操作一起成功或一起失败。这样,所有涉及的实体将保持一致状态。

    ACID 与事务

    事务在强制实施四个 ACID 属性(Atomicity、Consistency、solation 和 Durability)中起着关键作用。让我们看看是如何做到的。

    原子性(Atomicity)

    如果无法将一个数据库操作进一步分解为不同的操作,则该数据库操作被视为原子(atomic)操作。而事务也是原子的,因为事务中发生的所有操作要么一起成功,要么一起失败。如果任何单个操作在事务过程中失败,则一切都被视为失败,并且必须撤消(回滚)到事务发生前的状态。

    一致性(Consistency)

    使用事务的主要好处之一是,无论事务是否成功完成,它都能使数据库处于一致的状态。这确保了事务修改的数据符合列的所有约束,从而保持数据完整性。

    隔离性(Isolation)

    每个事务都与其他事务隔离。因此,一个事务不应影响同时运行的其他事务。换句话说,一个事务进行的数据修改应与其他事务进行的数据修改隔离。因此,虽然一个事务可以看到数据在其他并发事务对其进行修改之前以及完成之后所处的状态,但它看不到数据在事务中的任何状态。

    持久性(Durability)

    事务可以通过几种方式帮助提高持久性:不管发生任何事情,一个成功的事务中发生的数据修改都可以视为已存储在数据库中。完成每个事务后,在数据库事务日志中会输入一行。因此,如果系统故障时要求从备份中还原数据库,则可以使用此事务日志将数据库恢复到事务成功后的状态。

    总结

    事务是在数据库中强制实施四个 ACID 属性的一种绝妙方法。在今天的文章中,我们了解了事务如何做到这一点。在下一篇文章中,我们将研究如何在存储过程中使用事务来防止数据不一致。

    往期回顾

    Navicat 被投毒了 | 真相来了!

    盗版引发设备瘫痪

    Navicat 16.1 为OceanBase 社区版

    Navicat 成为信通院数据库创新实验室成员

    Navicat 学术伙伴计划 - 免费教育版申请

    Navicat 技术智库 - 实战演练与各类热门问题解答

    免费试用攻略 | Navciat 16 数据库管理工具

  • 相关阅读:
    YDOOK:onnx onnxruntime Python APIs 接口文档网址
    Bunifu UI WinForms 6.0.1 Crack
    kubernetes集成GPU原理
    JAVA架构之路(MySql事务隔离级别)
    org.activiti.engine
    前端页面单元测试最佳策略:全面涵盖逻辑、组件、流程、UI及性能优化测试,全面保障软件应用的质量
    微信小程序订单页面怎么写啊,刚开始接触这个自己没有头绪不知道怎么下手
    YOLOv8 多种任务网络结构详细解析 | 目标检测、实例分割、人体关键点检测、图像分类
    干扰管理学习日志6--------干扰管理综述(2021)
    Vue tree树状结构数据转扁平数据
  • 原文地址:https://blog.csdn.net/weixin_53935287/article/details/126465047
  • 最新文章
  • 【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号