事务

数据库应用中完成单一逻辑功能的操作集合
事务(Transaction)概念最早来源于数据库管理系统[4][3],指访问并可能更新数据库中各种数据项的一个程序执行单元(Unit),[3]是完成单一逻辑功能的一个操作序列,[4]不同的数据库系统可能使用不同的语法,但通常以BEGIN TRANSACTION语句或SET/START TRANSACTION的成功执行开始,以COMMIT或ROLLBACK语句执行结束。[5][6][7]同一个事务中的所有操作要么全部执行,要么全部不执行。[8]事务进行插入、删除、修改或查询时,可以在一个或多个数据库进行存取操作。[5]
事务执行需要具备ACID四个要素,即原子性、一致性、隔离性、持久性。[9]在事务执行周期中,事务在启动和运行过程中的状态称为活动状态,[10]假如事务成功,在事务中做的所有的操作都会在提交时完成并且永久地成为数据库的一部分,[11]如发现正常的执行不能继续,事务处于失败状态,[10]则必须取消或回滚,这样所有的操作都会消除。[11]事务回滚且数据库恢复到事务开始执行以前的状态时是事务的中止状态,系统可以选择重启事务或放弃事务。[12]
不同数据库事务有不同的操作结构,以MySQL数据库为例,事务结构包括三部分,即设置事务起点、执行操作以及提交或撤销事务。其中设置事务起点的目的是确定事务何时开始以及何处开始,之后就要进行数据读写操作,当事务执行成功,则进行事务提交,否则进行事务撤销操作,同时允许事务回滚到某个特定点而非完全开始状态。[13]
事务有多种不同分类,如事务通过事务模型分为显式事务、隐式事务和自动事务,[14]根据事务管理范围划分为本地事务和分布式事务,[15]以及可通过用法和构造分为平面事务、嵌套事务、链接事务、长串事务等。[16]其作用体现在维护数据一致性和完整性、[17]提供并发访问问题的解决方案、[18]保障数据安全性等。[17]在生活中的应用可以体现在银行转账、超市收银、[19]在线购物、[20]旅行订票等[16]

概念