当前位置: 首页 > news >正文

【必会面试题】事务的四大特性?ACID

目录

事务的四大特性,即ACID特性,是数据库管理的基石。

  1. 原子性(Atomicity)
    • 定义:事务作为一个整体被执行,其内部的操作要么全部完成,要么全部不完成。如果事务中的任何一部分失败,那么整个事务就会失败,之前所做的所有更改都会被回滚,以保持数据库的一致性。
    • 实现:通过回滚日志(Undo Log)来实现。在事务执行过程中,每当对数据库进行修改操,数据库引擎改会在回滚日志中记录下这次修改的反向操作(即Undo信息)。例如,如果一个UPDATE操作将某字段从A改为了B,回滚日志会记录将该字段从B改回A的指令。
      • 提交:如果事务成功执行完毕并提交,事务管理器会检查是否所有预写日志已写入磁盘,然后清理相关的回滚日志或者等待垃圾回收机制清理。
      • 回滚:如果事务遇到错误需要回滚,或者调用了ROLLBACK语句,事务管理器会依据回滚日志执行反向操作,撤销所有已做的修改,直至事务回到初始状态。这一步确保了事务的原子性。

在这里插入图片描述

  1. 一致性(Consistency)

    • 定义:事务执行前后,数据库应保持合法的状态,即满足所有的业务规则。即使在多个事务并发执行的情况下,每个事务也必须从一个一致性的状态转换到另一个一致性的状态。
    • 实现:通过其他三个事务的特性及一些约束规则实现。理解起来有些抽象,简单来说就是不能有幻读、脏读、不可重复读等问题。
      • 例如,A仓库+B仓库共有100件货物,A仓库向B仓库发10件货物,他们的总数应该时不变的,这就要求数据库对还在路上的10件货物做处理,保证不能出现A仓库少10件,B仓库没有收到货物的情况。
  2. 隔离性(Isolation)

    • 定义:多个事务并发执行时,彼此的行为应该是独立的,一个事务不应该看到其他事务未提交的数据变更,以避免脏读、不可重复读和幻读等问题。
    • 实现:通过各种隔离级别来控制。数据库系统提供了多种隔离级别,如读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable),每种级别通过不同的锁定机制和并发控制算法实现不同程度的隔离效果。例如,使用MVCC(多版本并发控制)来实现可重复读的隔离级别。
      • 具体请看:经典面试题:什么是事务的隔离级别?什么是MVCC?
  3. 持久性(Durability)

    • 定义:一旦事务提交,它对数据库的修改就是永久的,即使发生系统崩溃或电源故障,这些更改也不会丢失。
    • 实现:通过重做日志(Redo Log)来实现。事务提交时,相关改动首先被记录到重做日志中,然后才被实际应用到数据库中。在系统恢复时,可以根据重做日志将未持久化的数据重新写入数据库,从而确保事务的持久性。此外,还会定期将内存中的数据刷写到磁盘上,确保数据的安全性。

在这里插入图片描述

http://www.lryc.cn/news/370517.html

相关文章:

  • 【QT】记录一次QT程序发布exe过程
  • 数据分类分级,误把起点当终点
  • stm32 启动文件分析
  • playwright--简单使用
  • pom学习笔记:kimi的自动化操作
  • 【iOS】UI学习——界面切换
  • 【悬架笔记三】1/4被动悬架垂向动力学仿真+频域特性分析
  • 【C++】——继承(详解)
  • openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现
  • Git 分支管理规范化[Git Flow ]分支管理策略
  • 一键Mock工具(Http协议接口调试工具)
  • Golang的context
  • Android 各个版本名称和特性总结(持续更新)
  • 9.0 Android中的网络技术
  • linux查看端口是否被占用 / 包含某个字符的文件/当前正在运行的进程/根据端口号查找进程
  • 解锁 JavaScript ES6:函数与对象的高级扩展功能
  • 算法金 | 10 大必知的自动化机器学习库(Python)
  • 微信小游戏开发难度大吗?开发流程有哪些?
  • Qt程序打包成单个exe文件
  • 【机器学习】GANs网络在图像和视频技术中的应用前景
  • MFC 使用sapi文字转换为语音
  • (Git)多人协作1
  • MySQL-分组函数
  • 【C语言】联合(共用体)
  • 【博客715】如何从victorimametrics集群中下线vmstorage节点
  • Redis缓存技术详解与实战
  • 业务架构的位置及关系
  • CMS与AI的融合:构建万能表单小程序系统
  • 机器学习常见知识点 2:决策树
  • 海洋CMS admin_notify.php 远程代码执行漏洞复现(CVE-2024-30565)