脏读:读取了未提交的事务的数据;
不可重复读:读了一个数据后,这个数据被另外的事务修改了,然后读取的数据与先前读的不一样;
幻读:一个事务改了一批数据,比如把id=1改成了2,然后一个事务又提交了一行数据,里面id=1,对于前一个数据来说,看着就好像没把这批数据的id全改过来一样,造成幻读。
事务的四大特性:
原子性:要么都成功,要么都失败
一致性:总和相同
隔离性:避免多个线程操作数据库造成脏读,不可重复读和幻读等问题
持久性:事务一旦提交,数据改变是永久的,数据库即使遭遇故障也不会丢失事务
四大隔离级别由低到高:
读未提交:什么问题不能保证;
读已提交:避免脏读;
可重复度:避免脏读、可重复读;
串行化:避免脏读,可重复读,幻读
级别越高,数据库实现的成本就越高,比如串行化这种,要通过锁表(类似多线程的锁)的形式去实现,当一个线程执行时候,其他线程只能在外边等待。mysql默认级别是可重复读。
https://www.cnblogs.com/fjdingsd/p/5273008.html