十分钟了解PHP事务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fenghuangjc/article/details/82817787

数据库事务四特性

原子

全部成功,或者全部失败

一致

比如:A和B的钱是1000元,无论他们之间如何转,总数还是1000元

隔离

当多个用户并发访问数据库,如操作同一表,数据库为每个用户单独开启事务,不能被其它事务的操作干扰,多个并发事务之间要互相隔离。

持久

事务一旦被提交,那么对数据库的数据改变是永久的,即使数据库系统故障也不会丢失提交事务的操作。

并发操作几个问题

脏读

事务处理时读取了另一个未提交的事务的数据。
如B的余额为0元,A转账给B一万元,但是还没有提交成功。这时候,B手机支付一万元,读取到A转账的一万元,并进行了扣款。读到的一万元就是脏数据。因为A可能会撤销转账操作。

不可重复读

事务多次查询某数据但是返回值不同。因为在查询间隔期间,改数据被其它事务修改了。

幻读

发生于事务非独立执行。如一个数据值原为2,A对某数据复制为1,B又对其赋值为2,A再次查看改数据时,发现还是为2。

四种隔离

数据库事务隔离有四种

未提交读

可以读取到未提交的数据,会产生脏读。

提交读

一个事务提交后,其余事务才会读取到该事务的数据

重复读

开始读取数据(事务开启)时,不再允许修改操作。MySQL默认是这种。

序列化

是最高的事务隔离级别,事务串行化执行,可以避免脏读、不可重复读与幻读。但是这种效率低下,比较消耗数据库内存性能,一般不使用。

猜你喜欢

转载自blog.csdn.net/fenghuangjc/article/details/82817787