数据库多个事物的并发问题
数据库并发操作存在的异常情况 — 脏读 设置数据库的隔离级别 : setTRANSACTION ISOLATION LEVEL READUNCOMMITTEDspan style=font-size:14px业务情景:/span 张三准备用 ATM 机向其北京招行的帐户汇 1000 块钱,在汇之前先用其智能手机的手机银行客户端查询
数据库并发操作存在的异常情况—脏读
设置数据库的隔离级别:
setTRANSACTION ISOLATION LEVEL READUNCOMMITTED业务情景:
张三准备用ATM机向其北京招行的帐户汇1000块钱,在汇之前先用其智能手机的手机银行客户端查询到其北京账户还剩100,接着他用ATM机向其北京帐户打过去1000,在提示确认提交时,他又用手机查看了一下其帐户余额竟然为1100。
数据库并发操作存在的异常情况—不可重复读
设置数据库的隔离级别:
setTRANSACTION ISOLATION LEVEL READCOMMITTED ;业务情景:
张三用其智能手机的手机银行客户端查询其招行帐户余额为100元,他没有马上退出,去做了一会别的事,在此过程中他老婆在一个ATM机上向其帐户上汇入了1000元,他回来后又刷新了一下余额,竟然为1100元。
数据库并发操作存在的异常情况——幻读(Magic read)
设置数据库的隔离级别:
setTRANSACTION ISOLATION LEVEL REPEATABLEREAD;业务情景:
张三用其智能手机的手机银行客户端查询其招行帐户余额为300元,他准备用其中的200去抢购一个商品,在他没付款之前他的老婆取走100元,他再次查看了一下余额,还是300元,他花了200支付了商品,在支付完后,他再次查了一下余额,竟然发现账户里一毛钱都没有啦!
数据库并发操作存在的情况— 不能并发
设置数据库的隔离级别:
setTRANSACTION ISOLATION LEVEL SERIALIZABLE;
业务情景:
张三用其智能手机的手机银行客户端查询其招行帐户余额为99.9元,但他需要100元才能支付抢购,他QQ告知老婆在线等待,他老婆立马找到一个ATM机准备向其帐户上汇入了100元,但钱就是汇不进去。