数据库事务四大特性、隔离级别
【以转账为例】 事务 事务是指满足ACID的一组操作,可以通过Commit提交一个事务,也可以使用Rollback进行回滚。 ACID 1.原子性(Atomicity) 事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。 2.一致性(Consisitency) 数据库在事务执行前后都保持一致性状态。即转账前后,两个人账户总金额不变。 3.隔离性(Isolation) 根据隔离级别,一个事物所作的修改对于其他事务来说是不确定的。 4.持久性(Durability) 一旦事务提交,则其所作的修改将会永远保存到数据库中。 隔离级别 mysql默认的隔离级别是可重复读。 下面的代码所运行的两个事务需要在两个不同的session中执行,开启两个客户端。 1.读未提交 READ UNCOMMITTED 读未提交:事务中的修改,即使没有提交,对其他事务也是可见的。 事务1: 1 set session transaction isolation level read uncommitted; 2 3 start transaction; 4 update user set money = money - 100 where id = 1; 5 update user set money = money + 100 where id = 2; 6 commit;