数据库读脏数据指的是一个未提交事务读取到另一个未提交事务的数据。
例如:
现有一叫Lucy的职工,薪资为20k/月,现有海绵宝宝和派大星两个领导要对Lucy数据库记录进行操作。
职工号 | 姓名 | 薪资 |
1 | Lucy | 20k |
海绵宝宝: 派大星:
我是事务A 我是事务B
我将Lucy的工资修改为30k/月 读取到Lucy工资为30k/月
我后悔了,我要进行回滚 提交事务
提交事务
此时,派大星读取薪资为30k/月,而Lucy的实际薪资为20k/月,因此事务B读了脏数据。
不可重复读:一个未提交的事务读取到另一个提交事务修改的数据
例如:
现有一叫Lucy的职工,薪资为20k/月,现有海绵宝宝和派大星两个领导要对Lucy数据库记录进行操作。
职工号 | 姓名 | 薪资 |
1 | Lucy | 20k |
海绵宝宝: 派大星:
我是事务A 我是事务B
读取Lucy的工资为20k/月 修改Lucy工资为30k/月
读取派大星提交事务的工资为20k/月 提交事务
提交事务
此时海绵宝宝两次读取Lucy的数据不一值,产生不可重复读的现状。
虚(幻)读:一个未提交事务读取到另一个未提交事务添加的数据
例如:
现有两个职工分别交Lucy和Tom,现有海绵宝宝和派大星两个领导要对数据库记录进行操作。
职工号 | 姓名 | 薪资 |
1 | Lucy | 20k |
海绵宝宝: 派大星:
我是事务A 我是事务B
读取Lucy的工资为20k/月 添加Tom职工信息
职工号 | 姓名 | 薪资 |
1 | Lucy | 20k |
2 | Tom | 15k |
读取Tom信息 提交事务
提交事务
此时海绵宝宝读取到派大星未提交时所添加的信息。