数据库事务

事务(Transaction)是并发控制的基本单位。

所谓的事务,它是一个操作序列,这些操作要么都执行要么都不执行,它是一个不可分割的工作单位。

事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 

简单地说,事务是一种机制,用以维护数据库的完整性。

事务的开始:

BEGIN或START TRANSACTION都是显式开启一个事务;

事务的提交:

COMMIT或COMMIT WORK都是等价的;

事务回滚:

ROLLBACK或ROLLBACK WORK也是等价的;
事务的开始提交回滚

事务四个特性(ACID):
1.原子性(Atomicity):事务中的各个操作要么都做要么都不做
2.一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态
3.隔离性(Isolation):一个事务的执行不能被其他事务干扰
4.永久性(Durability):一个事务一旦提交,它对数据库中数据的改变就应该是永久性


脏读:一个事务处理过程里读取了另一个未提交事务的数据

不可重复读:一个事务内多次查询却返回了不同的数据值(强调update)

幻读:一个事务范围多次查询返回不同的数据值(强调 insert,delete)

Sring中五种隔离级别:

    TRANSACTION_NONE:不使用事务

    TRANSACTION_READ_UNCOMMITTED:允许脏读

    TRANSACTION_READ_COMMITTED:防止脏读,最常用的隔离级别,大多数数据库默认的隔离级别

    TRANSACTION_REPEATABLE_READ:防止脏读和不可重复读

    TRANSACTION_SERIALIZABLE:防止脏读,不可重复读,幻读,效率低

回滚:回滚通常是由数据库日志管理的,回滚时反向执行从事务开始时的所以日志。其他运行的事务可能依赖于被回滚的事务的结果,在这种情况下,这些依赖的事务也会被回滚

原文地址:https://www.cnblogs.com/liuxgcn/p/11137586.html