搜索
写经验 领红包
 > 动物

简述mysql的事务隔离级别有哪些(mysql数据库事务隔离级别默认)

导语:Mysql系列(二) - Mysql事务的本质和隔离级别

简述mysql的事务隔离级别有哪些(mysql数据库事务隔离级别默认)

事务的本质

当线程要并发要读取和修改数据时候,如何保证并发的同时,又能保证数据的一致性。

事务要解决的问题

换句话说事务就是为了解决在并发场景的两类主要问题,这两类问题会导致更新不一致(更新丢失)和读取不一致

1. 解决更新丢失问题

回滚导致的更新丢失:例子:张三的工资为5000,事务A中获取工资为5000,事务B获取工资为5000,汇入100,并提交数据库,工资变为5100,随后,事务A发生异常,回滚了,恢复张三的工资为5000,这样就导致事务B的更新丢失了。

两个并发事务导致更新覆盖丢失:例子:张三的工资为5000,事务A和事务B查询账户都是5000,然后事务A账户扣减100,提交。事务B扣减800提交。这时候账户余额为4200,事务1扣减的100 会不翼而飞。因为重复读读的是历史版本(快照读)而不是读的当前版本的数据(当前读),如果用快照读的结果加上数值去更新必然要导致更新丢失,如果是当前读的结果进行更新就不会。什么是当前读和快照读见后面章节

2. 解决读导致读数据不准或者可见性的问题:

比如:脏读、不可重复读、幻读

解决上面问题的4大核心抓手

锁:隔离性解决,并发能力mvcc:隔离性解决,解决读隔离问题redolog:持久性解决undolog:原子性解决

在一个事务里面通过上面4大抓手合力来解决事务要解决的问题

事务的隔离级别

上面的4大核心能力的的相互配合使用,在mysql里面又演化出4种不同隔离级别:

未提交读(RU)已提交读(RC)可重复读(RR)序列化读(SR)

这四种隔离级别让应用开发的人能更便捷灵活使用这数据库的能力为业务服务。这四种隔离级别分表提供了4种不同的并发控制能力,隔离级别的也是通过4大核心能力来实现的,也是为了让基于mysql的应用开发人员根据自己的需求更容易来使用mysql而产生的。这4中隔离级别可以解决第2点的两大类问题。

本文内容由小莉整理编辑!