文章目录一、悲观二、乐观   一般可以分为两类,一个是 悲观,一个是 乐观悲观一般就是我们通常说的数据库机制,乐观一般是指用户自己实现的一种机制。 一、悲观  悲观:它对于数据被外界修改持保守态度,认为数据随时会修改,所以整个数据处理中需要将数据加锁。悲观一般都是依靠关系数据库提供的机制,事实上关系数据库中的行,表不论是读写都是悲观悲观按照使用性质划分:共
本文导读:在金融系统的日终结算处理中,我们希望针对某个时间点的数据进行处理,而不希望在结算进行过程中,数据再发生变化。此时,我们就需要通过一些机 制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的 ,即给我们选定的目标数据上锁,使其无法被其他程序修改。数据库支持两种机制:即通常所说的悲观乐观 在实际的多用户并发访问的生产环境里边,我们经常要尽可
         oracle有悲观也有乐观。          悲观比较安全一些,可以防止丢失更新,但是就是互相等待,影响效率。          一般会用乐观,即开始操作时,乐观的认为数据不会被其他人更改,直到提交时才加锁检查。比如在
乐观悲观的区别1.乐观悲观是什么乐观乐观表示当线程对数据进行操作时,认为不会有其他线程来修改数据,所以先不上锁,对数据操作之后,检查此时的数据是否和最开始线程进入时的数据一致,如果一致,那么就可以认为没有其他线程对数据进行修改,现在可以对数据进行更新;如果不一致,那么就再读数据,再操作再检查数据,直到可以更新数据为止。悲观:表示当前线程对数据操作时,认为一定会有其他线程去更改数
转载 2023-08-20 12:09:41
146阅读
1、  分类一:乐观悲观  a)悲观:认为其他线程会干扰本身线程操作,所以加锁                        i.具体表现形式:synchronized关键字和lock实现类  b)乐观:认为没有其他线程会影响本身线程操作,所以不加锁&nbsp
转载 2023-06-05 19:47:45
89阅读
在实际的开发过程中,我们应该经常用到悲观。以前一直没关注理论,只是在实践中,今天搜索了下,其实就是对这两个名词的概念解释。悲观(Pessimistic Lock)顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到。传统的关系型数据库里边就用到了很多这种机制,比如行,表等,读,写等,都是在做操作之前先
首先要明确:无论是悲观还是乐观,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观悲观的概...
原创 2021-09-17 13:56:16
1153阅读
。我们知道,最常用的处理多用户并发访问的方法是加锁,当一个用户锁住数据库中的某个对象时,其他用户就不能再访问该对象。加锁对并发访问的影响体现在的粒度上,比如:放在一个表上的限制对整个表的并发访问;放在数据页上的限制了对整个数据页的访问;放在行上的只限制对该行的并发访问。可见行粒度最小,并发访问最好,页粒度最大,表介于2者之间。有两种:悲观乐观悲观假定其他用户企图访问或者
转载 精选 2014-05-22 14:37:45
596阅读
数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观)和悲观并发控制(悲观)是并发控制主要采用的技术手段。下面将分别阐述这两种“”的区别与实现。悲观一、概念悲观,顾名思义,它持有一种非常悲观的态度,假设任何事务对数据的操作都会发生并发冲突。因此,在整个数据处理过程中,将数据处于锁定状态。 悲
一、机制分为悲观乐观理解:悲观:对数据保持一种比较悲观的想法,数据肯定会出现冲突(多个线程操作一条数据),在处理数据时,将数据锁住,防止其他操作。乐观: 与悲观持相反的态度,一般认为数据不会冲突,一般是在数据进行提交更新的时候才进行判断是否允许修改。二、具体实现方式实现:悲观:select * from user where name= 'tony' for update乐观
(locking)业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“”,即给我们选定的目标数据上锁,使其无法被其他程序修改。Hi
原创 2014-03-02 23:17:40
761阅读
1点赞
什么是乐观/悲观? **无论是悲观还是乐观,都是人们定义出来的概念,可以认为是一种思想。**其实不仅仅是关系型数据库系统中有乐观悲观的概念,其实在java中也有广泛的应用。 悲观 概念 当我要对一条数据进行修改的时候,为了避免同时被其他人修改,于是我对该数据进行加锁操作,当其他人修改 ...
转载 2021-08-11 17:37:00
457阅读
2评论
悲观:一上来就加锁,每次只能一个线程进来,访问完毕后再解锁。乐观:一上来不上锁,认为是没有问题的,大家一起跑,等出现线程安全时才开始控制。  public class Test1 { private static AtomicInteger count = new AtomicInteger(0); public static void main(Stri
原创 2024-09-07 17:29:11
105阅读
一、概念乐观悲观是两种思想,用于解决并发场景下的数据竞争问题。乐观乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。悲观悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放;上锁期间其他人不能修改数据。二、实
转载 2023-09-09 17:48:39
133阅读
有两种分类方法。(1) 从数据库系统的角度来看分为以下三种类型:   独占(Exclusive Lock)独占锁定的资源只允许进行锁定操作的程序使用,其它任何对它的操作均不会被接受。执行数据更新命令,即INSERT、 UPDATE 或DELETE 命令时,SQL Server 会自动使用独占。但当对象上有其它存在时,无法对其加独占。独占一直到事务结束才能被释放。 共享(Share
转载 2013-05-27 22:30:00
317阅读
2评论
1. 悲观简介  悲观(Pessimistic Concurrency Control,缩写PCC),它指的是对数据被外界修改持保守态度,因此,在整个数据处理过程中, 将数据处于锁定状态。悲观的实现,往往依靠数据库提供的机制,也只有数据库层提供的机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据。2
悲观可以把悲观想成一个很小心的人,无论做什么操作之前,都要去加个,这样别人想拿这个数据就会block直到它拿到。但是在效率方面,处理加锁的机制会产生额外的开销,还有增加产生死锁的机会。另外如果只有只读事物,这个是没必要的。 传统的关系型数据库里边就用到了很多这种机制,比如读,写等,都是在做操作之前先上锁。悲观的实现在java中,synchronized就是一种悲观的实现。这个
概念上区别乐观(Optimistic Locking):顾名思义,对加锁持有一种乐观的态度,即先进行业务操作,不到最后一步不进行加锁,"乐观"的认为加锁一定会成功的,在最后一步更新数据的时候再进行加锁。悲观(Pessimistic Lock):正如其名字一样,悲观对数据加锁持有一种悲观的态度。因此,在整个数据处理过程中,将数据处于锁定状态。悲观的实现,往往依靠数据库提供的机制(也只有数据
转载 2023-08-21 18:32:34
130阅读
我们今天就来了解一下中的乐观悲观。在面试中,如果是Java后天研发的工程师,很有可能会考到这一个知识点。所以今天也就来说下这个。两者的概念乐观根据表面上来看每次去拿数据的时候认为别人都不会修改。所以不会上锁,有着更宽松的机制,减少了性能的开销。在更新的时候会根据版本号进行判断是否有程序去修改这个数据,例如版本号等机制,使用版本号的机制在进行数据提交的时候,如果版本号大于对应的版本号那么
转载 2023-09-20 15:52:41
59阅读
最近在工作过程中,用JPA的时候有一个注解。是@Lock(value = LockModeType.PESSIMITIC_READ) BizDistributeLock findFirstByBizName(String bizName);此外,还有一个LockModeType.PESSIMISTIC_WRITE看语义,是悲观。那么,需求是这样的 有两张表,A表有数据做插入操作。可能会有多个用
  • 1
  • 2
  • 3
  • 4
  • 5