一,概念:
事务(transaction)是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。事务通过以BEGIN TRANSACTION开始,以commit 或rollback操作结束,commit即提交,提交事务中所有的操作,事务正常结束。rollback即回滚,撤销已做的所有操作,回滚到事务开始时的状态。事务是数据库区别于文件系统的重要特性之一。
例如在flask中,我们一次数据库提交操:
try: db.session.add(task) db.session.commit() except Exception as e: db.session.rollback() raise e
二,特性:
- 原子性
- 一致性
- 隔离性
- 持久性
三,事务是如何实现的?
在事务的ACID特性中,C即一致性是事务的根本追求,而对数据一致性的破坏主要来自两个方面
- 1.事务的并发执行
- 2.事务故障或系统故障
数据库系统是通过并发控制技术和日志恢复技术来避免这种情况发生的。
并发控制技术保证了事务的隔离性,使数据库的一致性状态不会因为并发执行的操作被破坏。
日志恢复技术保证了事务的原子性,使一致性状态不会因事务或系统故障被破坏。同时使已提交的对数据库的修改不会因系统崩溃而丢失,保证了事务的持久性。