事务隔离级别,脏读、不可重复读、幻读,乐观锁、悲观锁(共享锁、排它锁)
数据库事务具有四个特征,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isoation)、持久性(Durability),简称为事务的ACID特性。
事务的隔离性是指在并发环境中,并发的事务是相互隔离的。SQL标准中定义了四种数据库事务隔离级别,级别从低到高分别为:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)、串行化(Serializable)。在事务的并发操作中会出现脏读、不可重复读、幻读。在事务的并发操作中第二类更新丢失可以通过乐观锁和悲观锁解决。
读未提交(Read Uncommitted)
该隔离级别,所有事务都可以看到其他未提交事务的执行结果。通俗地讲就是,在一个事务中可以读取到另一个事务中新增或修改但未提交的数据。
该隔离级别可能导致的问题是脏读。因为另一个事务可能回滚,所以在第一个事务中读取到的数据很可能是无效的脏数据,造成脏读现象。
> set tx_isolation='READ-UNCOMMITTED';
读已提交(Read Committed)
这是大多数数据库系统的默认隔离级别(但不是mysql默认的)
一个事务只能看见已经提交事务所做的修改。换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不