首页  >  文章  >  数据库  >  数据库多个事物的并发问题

数据库多个事物的并发问题

WBOY
WBOY原创
2016-06-07 15:00:031005浏览

数据库并发操作存在的异常情况 — 脏读 设置数据库的隔离级别 : setTRANSACTION ISOLATION LEVEL READUNCOMMITTEDspan style=font-size:14px业务情景:/span 张三准备用 ATM 机向其北京招行的帐户汇 1000 块钱,在汇之前先用其智能手机的手机银行客户端查询

数据库并发操作存在的异常情况脏读

设置数据库的隔离级别:        

  setTRANSACTION ISOLATION LEVEL  READUNCOMMITTED<span style="font-size:14px">业务情景:</span>

             张三准备用ATM机向其北京招行的帐户汇1000块钱,在汇之前先用其智能手机的手机银行客户端查询到其北京账户还剩100,接着他用ATM机向其北京帐户打过去1000,在提示确认提交时,他又用手机查看了一下其帐户余额竟然为1100

 

数据库并发操作存在的异常情况不可重复读

设置数据库的隔离级别:

setTRANSACTION ISOLATION LEVEL  READCOMMITTED ;<span style="font-size:14px">业务情景:</span>

             张三用其智能手机的手机银行客户端查询其招行帐户余额为100元,他没有马上退出,去做了一会别的事,在此过程中他老婆在一个ATM机上向其帐户上汇入了1000元,他回来后又刷新了一下余额,竟然为1100元。

 

数据库并发操作存在的异常情况——幻读(Magic read)

设置数据库的隔离级别 

setTRANSACTION ISOLATION LEVEL  REPEATABLEREAD;<span style="font-size:14px">业务情景:</span>

         张三用其智能手机的手机银行客户端查询其招行帐户余额为300元,他准备用其中的200去抢购一个商品,在他没付款之前他的老婆取走100元,他再次查看了一下余额,还是300元,他花了200支付了商品,在支付完后,他再次查了一下余额,竟然发现账户里一毛钱都没有啦!

 

 

数据库并发操作存在的情况— 不能并发

设置数据库的隔离级别:

<span style="color:#000000">setTRANSACTION ISOLATION LEVEL SERIALIZABLE;</span>

业务情景:

             张三用其智能手机的手机银行客户端查询其招行帐户余额为99.9元,但他需要100元才能支付抢购,他QQ告知老婆在线等待,他老婆立马找到一个ATM机准备向其帐户上汇入了100元,但钱就是汇不进去。

 

 

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn