SQL——什么是事务?事务的特性有哪些?

事务ACID特性解析
本文详细解释了数据库事务的概念及其核心属性:原子性、一致性、隔离性和持久性(ACID特性)。事务作为恢复和并发控制的基本单位,在确保数据正确性和一致性方面发挥着关键作用。
概念

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

特性

  事务是恢复和并发控制的基本单位。

  事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。

  原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。

  一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

  隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

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


### 事务的定义 事务是指一组逻辑操作单元,这些操作单元必须作为一个整体来执行。如果其中任何一部分失败,则整个事务将被撤销并返回到初始状态,从而确保系统的数据一致性[^4]。 --- ### ACID 属性详解 #### 1. **原子性 (Atomicity)** 原子性表示事务是一个不可分割的工作单位。这意味着事务中的所有操作要么完全成功,要么完全不执行。如果事务的一部分失败,那么整个事务都会回滚至原始状态,以防止部分更新导致的数据不一致现象[^1]。 ```sql BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; -- 转账扣款 UPDATE accounts SET balance = balance + 100 WHERE id = 2; -- 转账入账 COMMIT; ``` 在这个例子中,转账涉及两个账户的操作。如果其中一个 `UPDATE` 失败,比如网络中断或其他异常情况,整个事务会被回滚,保证资金不会丢失或重复计算。 --- #### 2. **一致性 (Consistency)** 一致性要求事务的执行结果必须使数据库从一个有效状态转换到另一个有效状态。换句话事务完成后,数据库的状态应满足所有的预定义约束条件、触发器和其他业务规则。如果没有达到预期效果,系统会通过回滚机制撤消已做的更改。 例如,在银行系统中,一笔成功的交易应该始终保持总金额不变: ```sql -- 总余额校验查询 SELECT SUM(balance) FROM accounts; ``` 无论有多少笔转账发生,只要事务遵循一致性原则,上述查询的结果应当恒定。 --- #### 3. **隔离性 (Isolation)** 隔离性意味着多个并发事务之间互不影响。每个事务在其独立的环境下运行,就好像其他事务不存在一样。这样可以避免因并发访问而导致的各种问题,如脏读、不可重复读和幻读等问题[^3]。 以下是几种常见的隔离级别及其特点: - **读未提交(Read Uncommitted)**: 最低级别的隔离,允许一个事务读取另一事务尚未提交的数据,可能导致脏读。 - **读已提交(Read Committed)**: 只能读取已经提交的数据,解决了脏读问题,但仍可能出现不可重复读。 - **可重复读(Repeatable Read)**: 确保同一事务内的多次相同查询返回同样的结果集,但可能面临幻读风险。 - **串行化(Serializable)**: 最高的隔离等级,强制事务按顺序依次执行,彻底杜绝了任何形式的干扰[^3]。 --- #### 4. **持久性 (Durability)** 一旦事务完成提交,其所做的一切变更都将永久保存在数据库里,即便随后发生了严重的系统故障也不会丧失这些成果[^2]。为了达成此目标,现代关系型数据库通常采用写前日志技术(WAL),先将变动信息记录于磁盘上的日志文件后再实际修改数据页内容。 --- ### 小结 综上所述,事务具备四个核心属性——原子性、一致性、隔离性和持久性,简称ACID。它们共同协作保障了复杂业务流程下的数据可靠性与安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值