关系型数据库----事务特性理解
关系数据库 --- 事务
事务遵循ACID规则
1,A (Atomicity) 原子性
原子性指的是事务作为一个最小的执行单位不可分割,一个事务里面的操作要么全部做完,要么全部不做, 只要一个操作失败全部 ROLLBACK
理解案例:我们进行一次银行转账(一个事务):A转10000元给B . 银行系统会执行的操作理应是从A 银行账户扣10000(操作一),给B的账户加10000(操作二),那如果因为网络中断,系统故障或者其他任何原因只执行了操作一那么导致结果是A 的账户少了10000元但是B 的账户 不会有任何改变.显然这样的事情是不能发生的.
结论: 关系型数据库事务应该遵循原子性原子规则,事务内的无论有多少操作都应该是 同生共死要么全部成功,要么全部失败
ps: 关系型数据库以理解关系为主,原子性也可以理解为事务和其内部操作的关系.
2,C (Consistency)一致性
一致性指的是事务的运行中数据库要保持一致的状态事务的运行不会改变数据库原本的一致性约束
理解案例:我们数据库用有一个用户表,一般用户理应由以下字段及字段约束
id: (primary key, not null, INTEGER) name:(not null,CHAR) password(not nul,CHARl)
表内有这样一个用户
id : 1 , name: xiaoyuan ,password: 122345678
假设我们现在提交一个事务为删除用户xiaoyuan 的用户名会发生什么呢?
表结构字段约束中name 为非空, 如果一个用户的name 字段为空那么直接会导致数据库的错误
结论:关系型数据库事务应该遵循一致性的原则,即事务的提交一定要遵循数据库本身结构
ps:会有人理不清原子性和一致性的区别,一致性也可以理解为事务和数据库之间的关系
3 ,I(Isolation)隔离性
隔离性是对同一个资源操作的事务,是系统在给定时间内执行的唯一操作。
理解案例:
假定A 先生有银行卡有10000元现在花5000元去买一台电脑,在同一时间A的老婆用同一账户的副卡要花6000元买一个包包,正常情况下10000元是不能变成11000元的,但是数据库在同一时间内有可能会存在一个资源经抢夺问题,即同一时间两个事务取读A 银行卡余额都是10000在同时去支付两个交易都能支付成功,银行是不愿意发生这种事情的
结论: 关系数据库事务应该有隔离性,不同事务不能同时对一个资源进行操作
ps:隔离性也可以理解为事务和事务之间的关系
4,D (Durability)持久性
持久性是最容易理解的,事务一旦提交,数据就永久安全的保存到磁盘中
理解案例:A 先生 在银行账户中有10000元老婆买包包用了10000余额0,第二天银行系统更新卡内余额又回到了三天前的状态又可以买电脑了,显然这个A 的臆想
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」