事务的4个特性

1.什么是事务?

事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。


2.事务的4个特性
A:原子性(Atomicity)
       事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。
B:一致性(Consistency)
       事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
C:隔离性(Isolation)
      一个事务的执行不能被其他事务干扰。
D:持续性/永久性(Durability)
      一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
 
原子性和一致性的区别:
举个栗子吧:
转账:张三给李四转账100元。那数据库假设需要 张三扣100,李四加100,记录一条流水。
如果流水没记录成功,那整体回滚,张三也没转账成功,李四也没多钱。这就是原子性的体现。




而张三必须扣100,李四必须加100,这个就是一致性了,如果因为某些逻辑原因,导致张三扣了100,流水记录100转账,而李四只加了60。然后这3条操作都成功了,那原子性就符合了,但是一致性就不符合了~~~
### 数据库事务概念 数据库中的事务一组SQL语句,这组操作要么全部成功完成,要么全都。如果事务的一部分失败,则整个事务都会回滚到初始状态,以此保持数据的一致性和完整性[^1]。 ### 事务的四个特性:ACID #### 原子性 (Atomicity) 原子性意味着一个事务一个可分割的工作单位,其中的操作要么都发生,要么都发生。当任何一部分操作失败时,所有已完成的部分都将被撤销,使数据库恢复至事务前的状态[^2]。 ```sql BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE account_id = 1; -- 减少账户余额 INSERT INTO transactions VALUES ('withdrawal', 'account_1', 100); -- 记录交易日志 COMMIT; ``` 这段代码展示了如何在一个事务中减少某个账户的余额并记录该笔提款。只有两个命令均成功执行才会提交更改;若有任一错误则会触发回滚机制。 #### 一致性 (Consistency) 一致性确保了事务将系统从一个有效状态转换到另一个有效状态。即使在并发环境中运行多个事务,也应维持这种有效性。为了达到这一点,在某些情况下可能需要牺牲一定的隔离度以换取更好的性能表现[^3]。 #### 隔离性 (Isolation) 隔离性的是各个事务之间相互独立运作而互相影响的能力。具体来说就是即便存在多条事务同时修改相同的数据项也会造成冲突或一致的结果。然而实际上完全严格的隔离可能会降低系统的吞吐量因此大多数DBMS允许设置同的隔离等级以便于权衡安全性和效率之间的关系[^4]。 #### 持久性 (Durability) 一旦事务被确认为已提交,那么它所带来的改变就会永久保存下来受后续故障的影响——无论是硬件还是软件层面的问题都会导致这部分更新丢失。这意味着即使服务器突然断电重启后依然可以找回最新的数据版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值