数据库隔离机制
所谓的数据库事务操作其实就是一组原子性的操作,要么全部操作成功,要么全部操作失败。 并行事务的四大问题: 1.更新丢失:和别的事务读到相同的东西,各自写,自己的写被覆盖了。(谁写的快谁的更新就丢失了) 2.脏读:读到别的事务未提交的数据。(万一回滚,数据就是脏的无效的了) 3.不可重复读:两次读之间有别的事务修改。 4.幻读:两次读之间有别的事务增删。 对应隔离级别 1.READ UNCOMMITTED:读未提交,不处理。 2.READ COMMITTED:读已提交,只读提交的数据,无脏读; 3.REPEATABLE READ:可重复读,加行锁,两次读之间不会有修改,无脏读无重复读; 4.SERIALIZABLE: 串行化,加表锁,全部串行,无所有问题。 1.READ UNCIMMITTED(未提交读) 事务还没提交,而别的事务可以看到他其中修改的数据的后果,也就是脏读。 2.READ COMMITTED(提交读) 首先大多数数据库系统的默认隔离级别是READ COMMITTED,这种隔离级别就是一个事务的开始,只能看到已经完成的事务的结果,正在执行的,是无法被其他事务看到的。这种级别会出现读取旧数据的现象 3.REPEATABLE READ(可重复读) REPEATABLE READ解决了脏读的问题,该级别保证了每行的记录的结果是一致的