MySQL数据库事务隔离级别
一.问题 1.脏读 已知有 两个事 务 A 和 B, A读取了已经被B更新但还没有被提交的 数据, 之后 , B回滚 事务, A读取的 数据就是脏数据 场景:公司发工资了,领导把5000元打到Tom的账号上,但是该事务并未提交,而Tom正好去查看账户,发现工资已经到账,账户多了5000元,非常高兴,可是不幸的是,领导发现发给Tom的工资金额不对,是2000元,于是迅速回滚了事务,修改金额后,将事务提交,Tom再次查看账户时发现账户只多了2000元,Tom空欢喜一场,从此郁郁寡欢,走上了不归路…... 分析:上述情况即为脏读,两个并发的事务:“事务B:领导给Tom发工资”、“事务A:Tom查询工资账户”,事务A读取了事务B尚未提交的数据 2.不可重复读 已知有 两个事 务 A 和 B ,A 多次读取同一数据,B 在A多次读取的过程中对数据作了 修改 并提交,导致A多次读取同一数据时,结果不一致,例子: 场景:Tom拿着工资卡去消费,酒足饭饱后在收银台买单,服务员告诉他本次消费 1 000 元 ,Tom将银行卡给服务员,服务员将银行卡插入POS机,POS机读到卡里余额为 3000元 ,就在Tom磨磨蹭蹭输入密码时,他老婆以迅雷不及掩耳盗铃之势把Tom工资卡的 3 000元 转到自己账户并提交了事务,当Tom输完密码并点击“确认”按钮后,POS机检查到Tom的工资卡已经没有钱,扣款失败