隔离级别高的数据库的可靠性高,但并发量低;隔离级别低的数据库可靠性低,但并发量高,系统开销小
1)READ UNCOMMITTED(未提交读)
事务中的修改,即使没有提交,其他事物也可以看到,这叫脏读,如无必要不要使用。
示例:售票系统只剩3张票,用户A在一号窗口购买3张票,B在二号窗口买票,A就要执行第三步时,
B接到了无票通知,但第三步失败了,数据回滚,导致票没有卖出去。
总结:事务还没有提交,而别的事务可以看到他修改的数据的后果,就是脏读。
2)READ COMMITTED(提交读)
多数系统默认此隔离级别,这种隔离级别就是一个事务的开始,只能看到已经完成的事务的结果,
正在执行的是无法被其他事物看到的。这种会出现读取旧数据的现象。
总结:A的事务执行到一半,而B无法看到他执行的操作,这能看到无效数据。
3)REPEATABLE READ(可重复读)
某个事务在读取某个范围的数据,但是另一个事务又向这个范围的数据去插入数据,导致多次读取不一致。
总结:虽然读取同一条数据可以保证一致性,但是却不能保证没有插入新的数据。
4)SERIALIZABLE(可串行化)
最高隔离级别,大量加锁,导致大量的请求超时,因此性能较低。
数据库的四种隔离级别
最新推荐文章于 2021-01-27 22:19:18 发布