数据库经常被问的就是增删改查+事务,有句古话是有人的地方就有江湖,其实有锁的地方就有事务,事务其实就是一种保障,下面说说事务的几种隔离级别,读未提交,读已提交,可重复读,可串行化
1 读未提交
这个是最低级的事务隔离,AB两个事务,A事务执行时,修改了数据,但是没有提交数据,这时B事务查询数据,他可以查询到A事务还没提交的数据,然后A事务发生报错回滚了,这时B读的数据就是有问题的,这个现象就是脏读。
2 读已提交
B事务只能读到A事务提交后的数据,这样就避免了脏读,但是如果在B事务执行时查询数据可能存在查询两次,查询的数据不一致,这个就是不可重复读,还可能出现B事务查询一个阶段的数据查询两次,但是两次查询的总数量不同,这个就是幻读,都存在一些问题
3 可重复读
这种是在读已提交基础上,B事务查询两次两次的查询结果是一样的,但是还是不可避免幻读
4 可串行话
这种情况就是加一个表锁,大家排队进行读取,这样就可以将脏读,幻读,不可重读读都解决了,但是不能处理高并发。
以上四种是Mysql的四种隔离级别,Mysql默认的隔离级别是可重复读,但是Oracle只有两种隔离级别,读已提交和可串行化,而oracle的默认隔离级别是读已提交,这就意味这如果,想避免,还要在代码中做一些处理