数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS(数据库管理系统)中的事务管理子系统负责事务的处理。
事务的四大特性:
1. 原子性(Atomicity)
事务的原子性是指一个事务要么全部执行,要么不执行。也就是说,一个事务不可能只执行一半就停止了。比如你从银行取钱,这个事务可以分成两个步骤:1) 存折减款,2) 拿到现金。不可能存折钱少了,而钱却没拿到。这两步必须同时完成,要么都不完成。
2.一致性(Consistency)
事务的一致性是指事务的运行并不改变数据库中数据的一致性。例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变。
3.隔离性(Isolation)
事务的隔离性是指多个事务并发执行时,一个事务的执行不应影响其他事务的执行。多个事务不会出现交错执行的状态,因为这样可能会导致数据不一致。
4.持久性(Durability)
事务的持久性是指一个事务一旦提交,它对数据库的修改应该永久保存在数据库中。事务运行成功后,系统的更新是永久的,不会无缘无故地回滚。