标签:
悲观锁:悲观锁悲观的认为每一次操作都会造成更新丢失问题,在每次查询时就加上排他锁修改非常多,查询非常少,使用悲观锁
第一张图的解释:
小zhang想在一个游戏网站买装备,此时游戏网站会去重定向到银行(假设是建设银行),然后银行再重定向会这个游戏网站.
但是小zhang点击充值的时候由于网页很慢,点击了好几下.....这个时候为了防止银行的钱过多的充值到小zhang的用户,银行会
设置一个callback属性,看这个属性的值如果是1了就不打钱了,如果检测到callback的值是0就打钱给小zhang。实际操作中,
会出现多线程的查询。假设有个order表还有一个account表。order表中有id account_id state money属性,account中有id money属性。如果打钱给了小zhang,那么order表中的state设置为1,表明已经打钱给了小zhang,然后设置money=money+100,假设银行查询了向此,第一次查询到用户的state是,0,money是0,那么就打钱,第二次检测到了state是1就不会打钱了。但是程序是并发的,第一次检查用户状态是0,然后并发到第二次查询,一看是也是0,那么就会出现问题。都是用查询那个隔离机制都不能控制了,这时候我们使用悲观锁,加上排它锁,其他就不能进来了.或者使用乐观锁,设置version的值
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/u014010769/article/details/46702013