数据库事务的四大特性ACID
事务
数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单元,由一个有限的数据库操作序列构成。——维基百科
简而言之:一系列数据库操作语句组成事务。
简介
数据库事务具有四个基本特性,分别是ACID(原子性automicity、一致性Consistency、隔离性isolation和持久性durability)。
原子性(Automicity)
概念
原子性(Automicity):事务是一个不可分割的工作单位,事务中的所有操作要么全部完成,要么全部不完成,不会出现部分完成的情况。如果再事务过程中发生错误,会将事务中所有已经执行的操作撤销(回滚Rollback)。
例子:
假设有一个银行转账业务,其中需要更新两个账户的余额。如果这两个操作没有被作为一个原子操作来执行,那就可能出现数据不一致的情况。例如,当转出账户的余额已经被减去了一定数额,但由于某些原因(如系统故障、断电等),转入账户的余额没有被增加,此时就会出现数据不一致的情况。
因此,在这个例子中,将更新两个账户的余额的操作作为一个原子操作,确保这两个操作要么全部执行,要么全部不执行,以保证数据的一致性。如果其中任何一个操作失败,整个事务都应该回滚,保证事务的原子性。
一致性(Consistency)
概念
一致性(Consistency):事务执行的结果必须使数据库从一个一致性状态变为另一个一致性状态。一致性是指数据的完整性和业务逻辑的正确性。
例子:
假设一个订单系统,其中一个订单包含了多个商品的信息和总价。为保证系统的一致性,订单的总价应该等于各个商品的价格总和。
如果再多个事务同时修改订单中的商品价格,就可能导致订单的总价与商品价格总和不一致,从而破坏了数据的一致性。为了解决这个问题,需要对这些修改操作进行协调和同步,使得任何时刻订单的总价都等于各个商品价格总和。
在这个例子中,可以采用锁机制来保证数据的一致性。在修改订单中商品价格的时候,需要先对订单进行加锁,防止其他事务修改订单中的商品信息,直到本事务完成修改操作并释放锁之后,其他事务才能继续对订单进行操作,从而保证数据的一致性。
隔离性(Isolation)
概念
隔离性(Isolation):多个事务并发执行时,每个事务都应该感觉不到其他事务的存在,各个事务之间应该是隔离的。事务之间的隔离级别会导致不同的并发问题,如脏读、不可重复读和幻读问题。(具体概念例子可以参考博主其他文章《数据库事务四种隔离级别》、《脏读、不可重复读和幻读》)
例子
假设一个银行系统中,用户A和用户B都有各自的账户,并且他们的账户都有1000元的余额。现在用户A向用户B转账500元。这个转账操作会涉及到两个账户的余额的变动,需要使用数据库事务来保证转账操作的正确性。
在这个转账操作的过程中,如果没有适当的隔离级别,就可能出现一下情况:
- 脏读:用户A转账500元之后,但还没提交事务,此时用户B可以读取到账户的变动,但这个变动可能是不可能靠的,因为他随时可能会被回滚。
- 不可重复读:用户B在读取账户的余额之后,用户A又取消了这次转账操作并提交了业务,此时用户B再次读取账户的余额,就会发现和之前读取到的不一样。
- 幻读:假设在转账操作中,还有一个触发器会自动从用户A和用户B的账户中扣除一定的手续费。如果用户A和用户B同时在转账操作中扣除了手续费,就可能出现幻读的情况,即用户A和用户B同时读取到了旧的余额,但在提交事务时却发现总的余额不对。
为了避免这些问题,可以用数据库的隔离级别来保证转账操作的正确性。例如,可以使用串行化隔离级别来保证转账操作的原子性、一致性和隔离性,从而避免脏读、不可重复读和幻读的问题。
持久性(Durability)
概念
持久性(Durability):一个事务一旦提交,他对数据库中的数据的改变就应该是永久性的。即使出现宕机或者其他异常情况,数据库系统应该能够保证事务的持久性。
例子
例如一个用户注册功能的实现。
当一个用户在应用程序中注册时,这个操作需要保证其持久性。也就是说,一旦用户注册成功,用户的信息应该被持计划的存储在数据库中,以便在用户下一次登录时可以被检索到。
这个过程需要确保事务的持久性特性,即在用户注册成功后,事务被提交并将数据持久化到数据库中,即使在应用程序或数据库出现故障或重启的情况下,用户数据也能得到保留,不会丢失。
猜你喜欢
- 1月前(中旅酒店 维景)中旅酒店首次AI数字人直播亮相南京维景
- 1月前(三亚太阳湾柏悦度假酒店)三亚太阳湾柏悦酒店携手ROSEONLY诺誓缔造浪漫七夕
- 1月前(甘肃文旅项目)甘肃省文旅产业链招商引资推介会在天水成功举办
- 1月前(当科学邂逅喜剧:科技馆喜剧嘉年华背后的"文旅破壁者")当科学邂逅喜剧:科技馆喜剧嘉年华背后的"文旅破壁者"
- 1月前(锦州新增两家国家aaa级旅游景区有哪些)锦州新增两家国家AAA级旅游景区
- 1月前(“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%)“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%
- 1月前(携程租车加盟合作)携程租车加盟优势全解析:开启旅游出行市场新篇章
- 1月前(锦江 iu)锦江荟APP原生鸿蒙版正式上线打造全场景旅行服务新体验
- 1月前(泸沽湖大酒店地址)泸沽湖岚岳酒店盛大开业|以摩梭文化为魂,打造高端度假新地标
- 1月前(第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章