当前位置: 首页 > 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)来实现。事务提交时,相关改动首先被记录到重做日志中,然后才被实际应用到数据库中。在系统恢复时,可以根据重做日志将未持久化的数据重新写入数据库,从而确保事务的持久性。此外,还会定期将内存中的数据刷写到磁盘上,确保数据的安全性。

在这里插入图片描述

相关文章:

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

目录 事务的四大特性,即ACID特性,是数据库管理的基石。 原子性(Atomicity) 定义:事务作为一个整体被执行,其内部的操作要么全部完成,要么全部不完成。如果事务中的任何一部分失败,那…...

【QT】记录一次QT程序发布exe过程

记录一次QT程序发布exe过程 使用windeploy与enigma发布独立的QT程序第一步 QT编译输出 **release** 版本第二步 QT 自带 windepoyqt 补全链接库第三步 enigma virtual box压缩打包为单一exe最后【2024-06-07 17】- 【补充】 贴一个自己用的bat脚本【**QtDeploy2exe.bat**】半自…...

数据分类分级,误把起点当终点

数据分类分级 吉祥学安全知识星球🔗除了包含技术干货:Java代码审计、web安全、应急响应等,还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 01 — 数据分类分级的定义 数据分…...

stm32 启动文件分析

启动文件前面的介绍 启动文件是后缀为.s的汇编语言文本文件,每行前面的分号表示此行是注释行。 启动文件主要完成如下工作,即程序执行过程: - 设置堆栈指针SP __initial_sp。 - 设置PC指针 Reset_Handler。 - 设置中断向…...

playwright--简单使用

playwright的基本使用主要围绕着启动浏览器、导航至网页、操作页面元素、执行脚本和收集数据这几个核心步骤。以下是简单的使用流程,以同步API为例: 目录 1. 导入库并启动playwright 2. 创建新页面并导航 3. 操作页面元素 4. 异步操作与等待 5. 数…...

pom学习笔记:kimi的自动化操作

1.先看结构: 声明:我是初学,可能有不合理的地方。 2.Base层。 我是把原来一个kimi的自动问答的代码改过来。 分析:其实我是新手,因为我用的浏览器是固定的,也没有打算和别人用。所以浏览器层面年的全部写…...

【iOS】UI学习——界面切换

界面切换 push和poppresent和dismiss示例程序 push和pop 在 Objective-C 中,pop 和 push 通常是与 UINavigationController 一起使用的方法,用于控制导航栈中视图控制器的跳转和回退。 push 和 pop 通常成对使用,用于实现导航栈的前进和后退功能。当用户进入新的视图控制器时…...

【悬架笔记三】1/4被动悬架垂向动力学仿真+频域特性分析

1/4被动悬架 代码: %书第156页、159页 clc clear close all %% 一.悬架参数 ms320; mw50; Ks22000; Cs1500; Kw195000; f00.07; %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 二.垂向振动动力学仿真 %% 二.1.状态方程 A [0 1 0 -1;.…...

【C++】——继承(详解)

一 继承的定义和概念 1.1 继承的定义 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类,被继承的称为基类…...

openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现

文章目录 openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现299.1 概述299.2 使用指导299.2.1 前提条件299.2.2 SQL流水采集方法299.2.3 操作步骤299.2.4 使用方法示例299.3 获取帮助299.4 命令参考299.5 常见问题处理openGauss学…...

Git 分支管理规范化[Git Flow ]分支管理策略

分支命名规范 master 分支&#xff1a;master 分支只有一个&#xff0c;名称即为 master。GitHub 现在叫 main develop 分支&#xff1a;develop 分支只有一个&#xff0c;名称即为 developfeature 分支&#xff1a;feature/<功能名>&#xff0c;例如&#xff1a;featu…...

一键Mock工具(Http协议接口调试工具)

点击下载《一键Mock工具&#xff08;Http协议接口调试工具》 1. 前言 在进行Web开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑…...

Golang的context

目录 context的基本使用 为什么需要context Context interface 标准 error emptyCtx cancelCtx Deadline 方法 Done 方法 Err 方法 Value 方法 context.WithCancel() newCancelCtx WithCancel中propagateCancel cancel timerCtx valueCtx context的基本使用…...

Android 各个版本名称和特性总结(持续更新)

我们就从Android 5.0开始吧&#xff0c;因为从写文时起&#xff0c;大部分手机都到5.0了。 目录 Android5.0 &#xff08;Lollipop 棒棒糖&#xff09;新特性 Android6.0新特性 Android7.0新特性 Android8.0(O)新特性 Android9.0新特性 Android10.0(Q)新特性 Android11…...

9.0 Android中的网络技术

Android中网络相关的技术&#xff0c;主要分别两种&#xff0c;一种为直接显示网页&#xff0c;另外一种为获取服务器中的数据进行设置。 权限声明 访问网络是需要声明权限 <manifest xmlns:android"http://schemas.android.com/apk/res/android"package"…...

linux查看端口是否被占用 / 包含某个字符的文件/当前正在运行的进程/根据端口号查找进程

查看端口是否被占用 netstat -tuln | grep 80查看包含某个字符的文件 grep -rl "aaa" .r &#xff1a;递归搜索子目录。l &#xff1a;只显示包含匹配字符串的文件名。 ack "your_string"查看当前正在运行的进程 ps aux或者使用 top 命令用于实时显示当…...

解锁 JavaScript ES6:函数与对象的高级扩展功能

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;ES6函数扩展&#x1f353;1 默认参数&#x1f35…...

算法金 | 10 大必知的自动化机器学习库(Python)

本文来源公众号“算法金”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;10 大必知的自动化机器学习库&#xff08;Python&#xff09; 一、入门级自动化机器学习库 1.1 Auto-Sklearn 简介&#xff1a; Auto-Sklearn 是一个自动…...

微信小游戏开发难度大吗?开发流程有哪些?

微信小游戏的开发难度因项目的复杂度和规模而定&#xff0c;一般来说&#xff0c;休闲益智类的小游戏的开发周期相对较短&#xff0c;大约在10个工作日到1个月。如果涉及到复杂的算法、高级的交互或特殊的效果&#xff0c;开发时间可能会相应延长。 微信小游戏的开发流程包括需…...

Qt程序打包成单个exe文件

文章目录 0. 准备工作1. 使用 windeployqt 提取必要的动态链接库和资源文件1.1 操作步骤1.2 补充 2. 使用 Enigma Virtual Box将文件夹打包成单个exe2.1 操作步骤 0. 准备工作 Qt程序打包用到的工具有&#xff1a; windeployqt &#xff1a;安装Qt时自带Enigma Virtual Box 下…...

5个常见照片管理难题,ExifToolGUI一站式解决

5个常见照片管理难题&#xff0c;ExifToolGUI一站式解决 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你有没有遇到过这样的情况&#xff1f;旅行归来&#xff0c;几百张照片的拍摄时间全乱了&#xff0c…...

lsyncd rsyncssh同步中断:Broken pipe (32) 深度诊断与流量整形方案

1. 问题现象与初步诊断 最近在帮客户部署lsyncdrsyncssh方案时&#xff0c;遇到了一个典型问题&#xff1a;同步25GB目录时&#xff0c;总是在传输4GB左右中断。日志里反复出现"Broken pipe (32)"错误&#xff0c;就像下面这样&#xff1a; packet_write_wait: Conne…...

告别预装旧版Demo:详解mmWave SDK两种刷写模式(Demonstration vs. CCS Development)及适用场景

告别预装旧版Demo&#xff1a;详解mmWave SDK两种刷写模式&#xff08;Demonstration vs. CCS Development&#xff09;及适用场景 当你第一次拿到毫米波雷达评估模块&#xff08;EVM&#xff09;时&#xff0c;预装的Demo固件可能已经过时半年甚至更久。这时候你会面临一个关键…...

5分钟快速上手APK Installer:在Windows上安装Android应用的终极指南

5分钟快速上手APK Installer&#xff1a;在Windows上安装Android应用的终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否想在Windows电脑上直接安装和运行…...

Claw-ED:基于教学风格学习的AI助教,一键生成个性化教学包

1. 项目概述&#xff1a;一个为教师而生的AI教学助手 如果你是一位一线教师&#xff0c;每天被备课、写教案、做课件、设计学生活动、准备分层材料这些繁琐工作压得喘不过气&#xff0c;同时又对市面上那些“通用”的AI工具生成的、充满“AI腔”的教案感到失望&#xff0c;那么…...

Aegon协议:AI内容授权的可信审计架构解析

1. Aegon协议&#xff1a;AI内容授权的可信审计架构在AI内容爆炸式增长的今天&#xff0c;版权合规已成为行业核心痛点。传统授权方案存在三大致命缺陷&#xff1a;一是缺乏可验证的访问记录&#xff0c;二是无法追踪内容在AI处理流水线中的流转&#xff0c;三是移动端完全处于…...

NHSE:5分钟掌握动物森友会存档编辑,打造你的完美岛屿

NHSE&#xff1a;5分钟掌握动物森友会存档编辑&#xff0c;打造你的完美岛屿 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 你是否曾经为了收集某个稀有家具而花费数周时间&#xff1f;是否因为地…...

Backlink Pilot:开源SEO自动化工具,提升外链建设效率

1. 项目概述&#xff1a;一个被低估的SEO自动化利器如果你在独立站、内容营销或者SEO领域摸爬滚打过一段时间&#xff0c;肯定对“外链建设”这四个字又爱又恨。爱的是&#xff0c;它确实是搜索引擎排名算法中一个极其重要的权重因子&#xff1b;恨的是&#xff0c;这个过程枯燥…...

内向技术人突破领导力瓶颈:从深度思考到战略沟通的进阶指南

1. 项目概述&#xff1a;内向工程师的“天花板”与破局之路 在技术圈子里待久了&#xff0c;你会发现一个有趣的现象&#xff1a;身边那些能写出精妙算法、搞定复杂架构的工程师&#xff0c;往往在茶水间的闲聊中显得沉默寡言&#xff0c;在大型会议上也更倾向于坐在后排。这并…...

3个真实问题告诉你:DdddOcr如何成为你的免费离线验证码识别助手

3个真实问题告诉你&#xff1a;DdddOcr如何成为你的免费离线验证码识别助手 【免费下载链接】ddddocr 带带弟弟 通用验证码识别OCR pypi版 项目地址: https://gitcode.com/gh_mirrors/dd/ddddocr 当你在自动化测试、数据采集或系统集成中遇到验证码时&#xff0c;是否曾…...