MySQL——事务的特性及其保障机制

定义

事务通常指的是数据库事务,它具有以下四个基本特性,通常被称为ACID特性

原子性(Atomicity):

定义

事务被视为一个不可分割的最小工作单位,事务中的操作要么全部完成,要么全部不发生,不会结束在中间某个环节。如果事务执行过程中发生错误,系统会回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

保障机制

原子性通常通过事务日志(Transaction Log)来保障。在数据库系统中,事务的所有操作在真正提交之前会被记录在事务日志中。如果系统发生故障,可以使用这些日志来撤销(回滚)未提交的事务,或者重做(前滚)已提交的事务。这个过程称为恢复(Recovery)。

案例

银行转账。当用户A向用户B转账1000元时,这个转账操作包括两个步骤:从用户A的账户中扣除1000元,以及在用户B的账户中增加1000元。如果在这个过程中发生错误,如网络中断,原子性确保要么两个步骤都完成,要么都不完成。如果只执行了第一步,系统会回滚到转账前的状态,确保数据的一致性。

一致性(Consistency):

定义

事务必须使数据库从一个一致性状态变换到另一个一致性状态。也就是说,事务执行的结果必须是数据库在逻辑上的正确状态。例如,在转账事务中,无论事务是否成功完成,账户的总额应该保持不变。

保障机制

一致性依赖于数据库管理系统(DBMS)强制执行的预定义的规则和约束,如主键约束、外键约束、唯一性约束和触发器等。这些规则确保了数据在事务执行前后都处于有效状态。事务的执行不会违反这些规则,从而保持数据库的一致性。

案例

在线购物。当用户下单购买商品时,系统需要执行一系列操作,包括扣减库存、记录订单、更新用户积分等。一致性确保这些操作要么全部成功,要么全部失败。如果因为某种原因(如库存不足)无法完成所有操作,系统会回滚到操作前的状态,保证数据库的一致性。

隔离性(Isolation):

定义

一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,反之亦然。这通常是通过锁机制来实现的。

保障机制

隔离性通过锁定机制(Locking Mechanism)和并发控制(Concurrency Control)算法来保障。数据库系统使用锁来防止多个事务同时修改同一数据项,从而避免冲突和不一致。并发控制算法,如乐观并发控制(Optimistic Concurrency Control, OCC)和悲观并发控制(Pessimistic Concurrency Control, PCC),帮助系统在保持隔离性的同时最大化并发性能。

案例

在多人同时编辑同一文档时。隔离性确保了每个用户的编辑操作都是相互隔离的,一个用户的操作不会影响到其他用户。数据库系统会确保即使在并发环境下,事务之间也不会相互干扰,从而保持数据的正确性。

持久性(Durability):

定义

一个事务一旦被提交,它对数据库中数据的改变就是永久性的。接下来的其他操作或故障不应该对其有任何影响。

保障机制

持久性通过将事务的最终状态持久化到非易失性存储(Non-Volatile Storage),通常是硬盘驱动器(HDD)或固态驱动器(SSD),来保障。一旦事务提交,相关的数据更改就会写入磁盘,即使在系统崩溃或断电的情况下,数据也不会丢失。这通常涉及到写前日志(Write-Ahead Logging, WAL)技术,确保数据在内存中更改之前,其日志条目已经被写入到磁盘。

案例

航班预订系统。当用户预订航班并完成支付后,持久性确保了这些信息即使在系统故障或断电的情况下也不会丢失。事务一旦提交,数据就会被永久保存在数据库中,用户可以确信他们的预订信息是安全的。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值