本文基于MySQL的数据库引擎InnoDB,通过本文了解:
1. 死锁。
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。以下是一些示例。
更新时互相等待
#第一个事务
START TRANSACTION;
#第一步,更新1111这条数据
UPDATE test2 SET sum_count = sum_count + 1 WHERE id = '1111';
#第三步,更新2222这条数据
UPDATE test2 SET sum_count = sum_count + 1 WHE...
本文基于MySQL的数据库引擎InnoDB,通过本文了解:
1. 幻读:在一个事务的两次查询中数据不一致。
上一篇了解了MySQL的不可重复读,但是有时候同一个事务中,前后两次查询显示数据有可能是不一致的,以下就为示例:
更新了其它事务中新增数据:
#第一个事务
START TRANSACTION;
#第一步,第二个事务插入前查询
SELECT * FROM test2;
#第五步,第二个事务插入后查询
SELECT * FROM test2;
#第六步,更新第...
本文基于MySQL的数据库引擎InnoDB,通过本文了解:
1. 可重复读。
首先,要了解的是,MySQL的事务默认隔离级别是:可重复读,即:在事务执行期间会锁定该事务以任何方式引用的所有行。
其它事务做更新时:
#第一个事务
START TRANSACTION;
#第一步,第二个事务更新前查询
SELECT * FROM test2;
#第四步,第二个事务更新后查询
SELECT * FROM test2;
#第六步,第二个事务提交后查询
SELECT * FROM test2;