malaikuangren

What is the purpose or drive to build thing like (xxx),How can it achieve the original goal of design?

2012年4月6日

事务的隔离级别

摘要: 事务隔离级别 ANSI/ISO SQL标准定义了4种事务隔离级别,对于相同的事务,采用不同的隔离级别分别有不同的结果。也就是说,即使输入相同,而且采用同样的方式来完成同样的工作,也可能得到完全不同的答案,这取决于事务的隔离级别。这些隔离级别是根据3个“现象”定义的,以下就是给定隔离级别可能允许或不允许的3种现象: a)脏读(dirty read):你能读取未提交的数据,也就是脏数据。只要打开别人正在读写的一个OS文件(不论文件中有什么数据),就可以达到脏读的效果。如果允许脏读,将影响数据完整性,另外外键约束会遭到破坏,而且会忽略惟一性约束。 b)不可重复读(nonrepeatable read 阅读全文

posted @ 2012-04-06 22:33 malaikuangren 阅读(201) 评论(0) 推荐(0) 编辑
悲观锁和乐观锁的一些观点(转自http://www.hetaoblog.com/myblogs/post/pessimistic-optimistic-locking-views.jhtml)

摘要: 本质上,数据库的乐观锁做法和悲观锁做法主要就是解决下面假设的场景,避免丢失更新问题:一个比较清楚的场景下面这个假设的实际场景可以比较清楚的帮助我们理解这个问题:假设当当网上用户下单买了本书,这时数据库中有条订单号为001的订单,其中有个status字段是’有效’,表示该订单是有效的;后台管理人员查询到这条001的订单,并且看到状态是有效的用户发现下单的时候下错了,于是撤销订单,假设运行这样一条SQL: update order_table set status = ‘取消’ where order_id = 001;后台管理人员由于在b这步看到状态有效的,这时,虽然用户在c这步已经撤销了订单, 阅读全文

posted @ 2012-04-06 22:32 malaikuangren 阅读(279) 评论(0) 推荐(0) 编辑
Hibernate的悲观锁和乐观锁实现

摘要: 锁( locking )业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的 “锁” ,即给我们选定的目标数据上锁,使其无法被其他程序修改。Hibernate 支持两种锁机制:即通常所说的 “悲观锁( Pessimistic Locking )”和 “乐观锁( Optimistic Locking )” 。悲观锁( Pessimi 阅读全文

posted @ 2012-04-06 22:18 malaikuangren 阅读(400) 评论(0) 推荐(0) 编辑
乐观锁和悲观锁(个人认为是对数据库锁的机制的一个宏观应用)

摘要: 悲观锁与乐观锁----------悲观锁【Pessimistic Locking】顾名思义就是采用一种悲观的态度来对待事务并发问题,我们认为系统中的并发更新会非常频繁,并且事务失败了以后重来的开销很大,这样以来,我们就需要采用真正意义上的锁来进行实现。悲观锁的基本思想就是每次一个事务读取某一条记录后,就会把这条记录锁住,这样其它的事务要想更新,必须等以前的事务提交或者回滚解除锁。假如我们数据库事务的隔离级别设置为读取已提交或者更低,那么通过悲观锁,我们控制了不可重复读的问题,但是不能避免幻影读的问题,因为要想避免我们就需要设置数据库隔离级别为Serializable,而一般情况下我们都会采取读 阅读全文

posted @ 2012-04-06 22:08 malaikuangren 阅读(549) 评论(0) 推荐(0) 编辑
事务的acid理解

摘要: 简介 ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability).这是可靠数据库所应具备的几个特性.下面针对这几个特性进行逐个讲解.理解原子性(Atomicity) 原子性意味着数据库中的事务执行是作为原子。即不可再分,整个语句要么执行,要么不执行。 在SQL SERVER中,每一个单独的语句都可以看作是默认包含在一个事务之中:所以,每一个语句本身具有原子性,要么全部执行,这么全部不执行,不会有中间状态:上面说了,每一条T-SQ 阅读全文

posted @ 2012-04-06 15:21 malaikuangren 阅读(10121) 评论(1) 推荐(5) 编辑