数据库的管理员要分散他们的数据库,以便处理基于Web,B2B,电子商务的访问,快速的硬盘读写以及更多的资源或许只能解决一部分问题。疲乏的机制甚至会削弱拥有很好资源的应用性能。乐观可以大大改善具有较多事务处理的数据库载入性能,比如基于web的客户端访问。悲观引发的问题:大多数Oracle开发者已经非常熟悉悲观,即在对数据进行更新之前给数据加锁。使用熟悉的SELECT...FOR UPDATE
         oracle有悲观也有乐观。          悲观比较安全一些,可以防止丢失更新,但是就是互相等待,影响效率。          一般会用乐观,即开始操作时,乐观的认为数据不会被其他人更改,直到提交时才加锁检查。比如在
 总结于ocl编程艺术: 经常发生的错误错误:更新丢失,旧数据更新了最新的数据。 解决问题的方法:在Oracle中看好悲观(取决于oracle开销小,高并发),但在其他的数据库已Deprecated悲观:在用户有意执行更新等DML操作之前,就在行上加锁 for update nowait悲观的结果:        &nb
原创 2023-04-20 17:26:33
333阅读
为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的定。 数据的锁定分为两种方法,第一种叫做悲观,第二种叫做乐观。什么叫悲观呢,悲观顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据 肯定会冲突,所以在...
转载 2009-01-14 16:48:00
270阅读
2评论
  以下是代码片段:  select*fromtestwhereid=10也就是没有for update这种锁定数据的语句的话,就不会造成阻塞了。另外一种情况,就是当数据库数据被锁定的时候,也就是执行刚才for update那条sql以后,我们在另外一个session中执行for update nowait后又是什么样呢。比如如下的sql语句。 由于这条语句中是制定采用nowait方式来进行检索,
        今天我们来聊下线程中的悲观乐观,首先提到"悲观","乐观"提到这两个名词,大家可能会先想到数据库。注意啦,我们这里讲的是多线程中的,而不是数据库中的(没听过的童鞋,可以百度了解下。大概思想同线程中的悲乐思想差不多)。在Java中,常用Api提供的就是synchronized和lock,以及CAS。不知道大家有没有这
转载 2023-09-30 15:03:25
152阅读
为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的定。 数据的锁定分为两种方法,第一种叫做悲观,第二种叫做乐观。什么叫悲观呢,悲观顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的
原创 2010-08-19 16:52:00
607阅读
为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的定。 数据的锁定分为两种方法,第一种叫做悲观,第二种叫做乐观。什么叫悲观呢,悲观顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的
转载 2012-09-04 10:56:36
377阅读
为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的定。 数据的锁定分为两种方法,第一种叫做悲观,第二种叫做乐观。什么叫悲观呢,悲观顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据
转载 2019-02-19 00:07:00
82阅读
2评论
1、无论是选择悲观策略,还是乐观策略。如果一个对象被上了,那么该对象都会受这个的控制和影响。如果这个是个排它,那么其它会话都不能修改它。2、选择悲观策略,还是乐观策略,这主要是由应用和业务需求来确定的。如果你的应用和业务经常会出现从我看到要修改的记录的值,到我修改完成该记录这个时间段内,该记录有较大概率被其它会话所修改。换句话说就是,在我真正去做出修改时,这个记录的值很可能已经与我
乐观与悲观是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。Java中synchronized关键字和Lock的实现类是悲观,线程一旦得到,其他需要的线程就挂起的情况就是悲观。 这种会让没有得到资源的线程进入阻塞状态,而后在争夺到资源后恢复为运行状态,这个过程中涉及到操作系统用户模式和内核模式的转换,代价比较高。乐观锁在Java中是通
转载 2023-06-02 21:44:22
130阅读
什么是CAS(1)CAS(compare and swap) 比较并替换,比较和替换是线程并发算法时用到的一种技术 (2)CAS是原子操作,保证并发安全,而不是保证并发同步 (3)CAS是CPU的一个指令 (4)CAS是非阻塞的、轻量级的乐观为什么说CAS是乐观乐观,严格来说并不是,通过原子性来保证数据的同步,比如说数据库的乐观,通过版本控制来实现等,所以CAS不会保证线程同步。乐观的认
转载 2023-11-08 23:18:38
76阅读
Spring整合SpringDataJpa的乐观与悲观详情一、概述上一篇《Spring和SpringDataJpa整合详解》介绍了Spring如何结合Spring-data-jpa进行数据库访问操作。这一篇介绍下springmvc环境下spring-data-jpa如何进行乐观、悲观的使用。悲观乐观的概念:悲观:就是独占,不管读写都上锁了。传统的关系型数据库里边就用到了很多这种
java多线程中的分类多种多样,其中有一种主要的分类方式就是乐观和悲观进行划分的。这篇文章主要介绍如何自己手写一个乐观代码。不过文章为了保证完整性,会从基础开始介绍。一、乐观概念说是写乐观的概念,但是通常乐观和悲观的概念都要一块写。对比着来才更有意义。1、悲观概念悲观:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻
先来说说什么是悲观乐观: 悲观:总是假设最坏的情况,每次操作数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞,直到它拿到Java中synchronized和ReentrantLock等独占就是悲观思想的实现。
出现背景:在需要提高程序的并发量的时候就需要使用多线程,但是多线程中有时会有线程不安全的问题,使用的话,必然会降低程序的执行效率。使用场景:在一些场景下线程不安全出现的频率较小,特别是我们读数据的时候比较多,修改数据的时候比较少,这个时候就可以使用乐观来解决。传统的就是不管会不会出现线程安全,直接带上锁,也就是悲观。在写数据多的场景,使用悲观要好一点,不管三七二十一,直接synchroni
转载 2023-11-03 06:59:45
95阅读
java分为三大类乐观、悲观、自旋乐观乐观是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。java 中的乐观基本都是通过 CAS 操作实现的,CAS
悲观认为随时有可能发生冲突,用保护所有临界区。日常使用的绝大多数都是悲观。优点: 1. 确保安全性,悲观临界区内不会发生并发问题。 2. 简单方便。 3. 使用悲观,在临界区内操作数据成功率高。缺点: 1. 如果临界区内耗时长,会影响程序整体工作效率。 2. 可能产生死锁。乐观乐观的认为不会发生并发冲突,不为临界区代码加锁,但会持有在运行临界区前的版本号。在完成临界区后对比
转载 2023-09-03 12:56:23
217阅读
什么时乐观? 第一步,先取出记录,获取当前version;第二步,当更新时,带上这个version;第三步:版本正确更新成功,错误更新失败。示例: update user set name = '向南天,version =3 where id = 1094592041087729777 and version = 2乐观和悲观是两种思想,用于解决并发场景下的数据竞争问题。乐观乐观锁在操作
转载 2023-08-03 14:40:59
0阅读
 乐观 VS 悲观 乐观与悲观是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用。1.乐观 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观适用于多读的应用类型,乐观锁在Java中是通过使用无编程来实现,最常采用的是CA
  • 1
  • 2
  • 3
  • 4
  • 5