聊聊数据库事务
一、事务的四大特性ACID
- 原子性,事务不可在分,要么都成功要么都是被
- 一致性,正确执行
- 隔离性,用户事务之间隔离
- 持久性,提交了之后永久
1.1 原子性(Atomicity)
原子性是指事务是一个不可再分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的sql语句,要么全部执行成功,要么全部执行失败。
begin transaction;
update account set money = money-100 where name = '张三';
update account set money = money+100 where name = '李四';
commit transaction;
1.2 一致性(Consistency)
一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态;换种说话就是,事务按照预期生效,数据的状态是预期的状态。
比如:张三向李四转100元,转账前和转账后的数据是正确的状态,这就叫一致性,如果出现张三转出去100块,但是李四没有增加100这就出现了数据错误,就没有达到一致性。
1.3 隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事物的操作所干扰, 多个并发事物之间要相互隔离.
1.4 持久性(Durability)
持久性是指一个事务一旦被提交,它多数据库中数据的改变就是永久的,接下来及时数据库发生故障也也不应该对其有任何影响。