【以转账为例】
事务事务是指满足ACID的一组操作,可以通过Commit提交一个事务,也可以使用Rollback进行回滚。
ACID1.原子性(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;