事务的基本要素:原子性,一致性,隔离性,持久性。
事务并发问题:脏读,不可重复读,幻读。
mysql隔离级别:read-uncommitted,read-committed,repeatable-read,serializable;
read-uncommitted:未提交读,事务A可以读取事务B未提交的数据,当事务B回滚,事务A读到的数据就是脏数据,这个现象叫做脏读。
read-committed:提交读,事务A无法读到事务B未提交的数据,当事务B提交后,事务A在事务B提交前后读取到的数据不一致,这个现象叫不可重复读;
repeatable-read:可重复读,解决了脏读和不可重复读,通过MVCC版本控制,快照读,当前读解决了幻读。
serializable:序列化,会锁定整个表,事务A先读取表(加读锁),事务B对表进行更新(加写锁)会等待,等事务A结束才会执行B,如果此时事务A对表进行更新(加写锁),会失败引起死锁。这时,事务B会锁定表(写锁),
事务A无法读取。