一、乐观(Optimistic Lock)每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其他线程修改,则不进行数据更新,如果数据没有被其他线程修改,则进行数据更新。由于数据没有进行加锁,期间该数据可以被其他线程进行读写操作。【Note】:   比较适合读取操作比较频繁的场景,如果出现大量的写入操作,数
转载 2023-06-16 17:38:44
72阅读
mysql分类数据库中的一般都是自动加的mysql主要分为两大类:悲观按作用性质分读(共享、S)事务A在读取一个记录a时,会先回去该记录的读,之后其他事务可以获取该记录的读并读取,但是不能修改。如果事务A需要对记录a进行修改,那么需要将读升级为写。升级为写的条件是该记录没有其他读,因此如果有两个事务同时想对同一个记录的读升级为写,就会发生死锁问题主动加锁select
转载 2023-10-19 17:05:05
44阅读
最近在开发中涉及到了多个客户端的对redis的某个key同时进行增删的问题。这里就会涉及一个问题:举例在分布式系统中不加锁会出现问题  redis中存放了某个用户的账户余额 ,例如100 (用户id:余额)  A端需要对用户扣费-1,需要两步:    A1.将该用户的目前余额取出来(100)    A2.将余额扣除一部分(99)后再插入到redis中  B端需要对用户充值+10,需要两步:   
# MySQL中的哪几种MySQL中,是用来控制并发访问数据库的一种机制。它可以保证多个用户并发访问数据库时的数据一致性和完整性。MySQL中的可以分为共享和排他两种类型。本文将介绍MySQL中的这两种以及它们的使用场景和示例代码。 ## 共享(Shared Lock) 共享又称为读,它允许多个用户同时读取同一份数据,但不允许对数据进行修改。当一个事务获取了共享后,
原创 10月前
40阅读
在日常开发工作中,我们几乎需要天天与数据库打交道,作为一名只会CRUD的SQL BOY,除了每天用mybatis-generator自动生成DAO层代码之外,我们几乎不用去care数据库中如何处理并发请求,但是突然某一天MYSQL数据库告警了,出现了死锁,我们的内心慌的一匹,不禁想问:这不就是个普通查询吗,咋还锁起来了?为了避免慌乱的表情被主管捕捉到,我们需要提前了解一下数据库中到底哪些。在M
转载 2023-09-02 11:25:08
61阅读
1、表级:开销小,加锁快;不会出现死锁;锁定粒度大,发生冲突的概率最高,并发度最低。 2、行级:开销大,加锁慢;会出现死锁;锁定粒度最小,发生冲突的概率最低,并发度也最高。 3、页面:开销和加锁时间界于表和行之间;会出现死锁;锁定粒度界于表和行之间,并发度一般。
转载 2020-06-16 13:55:00
205阅读
2评论
1、表级:开销小,加锁快;不会出现死锁;锁定粒度大,发生 并发度一般。
转载 2020-06-23 15:52:00
186阅读
2评论
# MySQL 中的MySQL中,是用来控制对共享资源的访问的机制。它们可以确保在多个用户同时访问数据库时数据的一致性和完整性。MySQL中有几种不同类型的,每种都有其自己的特点和适用场景。 ## 1. 共享(Shared Lock) 共享是一种轻量级的,允许多个事务同时访问一个资源,但是只能读取,不能修改。当一个事务持有共享时,其他事务可以继续读取资源,但是不能对资源进
原创 6月前
19阅读
主要参考图解小林,总结一个笔记一、分类1. 按粒度分全局粒度最大粒度其次粒度较小粒度最小不会死锁不会死锁会死锁会死锁加锁开销小,并发度极低开销较小,并发度较低开销较大,并发度略高开销很大,并发度高2. 类别分共享/读独占/写可以同时加多个只能加一个 3. 乐观、悲观乐观悲观先做着,最后提交才做锁定先着,再进行事务操作假设不会发生冲突假设会发生冲突多读场景
转载 2023-10-08 08:13:41
7阅读
一、简述数据库是在多线程高并发的情况下用来保证数据稳定性和一致性的一种机制。MySQL根据底层存储引擎的不同,的支持粒度和实现机制也不同。MyISAM 只支持表,InnoDB 支持行和表。目前 MySQL 默认的存储引擎是 InnoDB,这里主要介绍 InnoDB 的。InnoDB 存储引擎两大优点:一是支持事务;二是支持行。在高并发的情况下,MySQL 事务的并发处理会带来几个问
1. 前言关于分布式的实现,目前常用的方案以下三类:数据库乐观;基于分布式缓存实现的服务,典型代表 Redis 和基于 Redis 的 RedLock;基于分布式一致性算法实现的服务,典型代表 ZooKeeper、Chubby 和 ETCD。关于 Redis 实现分布式,网上可以查到很多资料,笔者最初也借鉴了这些资料,但是,在分布式的实现和使用过程中意识到这些资料普遍存在问题,容
转载 2023-08-10 17:10:30
1016阅读
以前好像一直都没有搞懂什么是演绎法,当时学离散数学的时候,自己都是半懂不懂的。后来上网google了一下,写得还是比较简单透彻的:  演绎法是论证方法的一种,基本的论证方法:①归纳法、②演绎法、③比较法。          ①归纳法。归纳论证是一种由个别到一般的论证方法。它通过许多个别的事例或分论
MySQL InnoDB 的基本类型https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html行级别的:共享排他表级别的:意向共享意向排他2.1 共享Shared Locks (共享),我们获取了一行数据的读以后,可以用来读取数据, 所以它也叫做读。用 select …… lock in share mode; 的方
转载 2023-07-13 11:23:15
36阅读
MySQL(InnoDB)详解 一、表,行 InnoDB存储引擎支持行和表(另类行),InnoDB表是通过行锁住所有行实现的,他本身不支持表。1、InnoDB类型:1)共享(Shared Locks):共享又称为读,简称S,顾名思义,共享就是多个事务对同一数据可以共享一把,都能访问到数据,但是只能读数据不能修改。 加锁方式:select * from users W
转载 2023-08-19 10:47:11
66阅读
一、公平/非公平公平是指多个线程按照申请的顺序来获取
转载 2021-08-05 10:54:59
337阅读
阅读文本大概需要6分钟。一、公平/非公平公平是指多个线程按照申请的顺序来获取。非公平是指多个线程获取的顺序并不是按照申请的顺序,可能后申请的线程比先申请的线程优先获取可能,会造成优先级反转或者饥饿现象。对于Java ReentrantLock而言,通过构造函数指定该是否是公平,默认是非公平。非公平的优点在于吞吐量比公平大。对于Synchronized而言,也是一种
转载 2023-05-30 06:49:08
129阅读
一、NSSA区域: 1.只有NSSA区域中才会现LSA7,可以存在ASBR,阻止LSA4/5 2.ABR将LSA7转成LSA5,传播到其他区域,这时,ABR也成为了ASBR,因为它也引入了LSA5,其它路由器看到LSA5的通告路由器是ABR。   二、实验拓扑如下:R1到R2属区域0,R2到R3属
目录线程分为哪几种状态?wait/sleep的区别并发/并行的区别管程用户线程/守护线程同步和异步线程上下文切换线程常用方法常见线程安全类线程分为哪几种状态?java线程分为六种状态new  新建runnable  可运行blocked 阻塞waiting 等待time waiting 限时等待termingted 终结getState()方法可获取当前线程的状态操作系统线程分
目录一、java中的线程分为几种?二、线程与进程的区别:三、什么是死锁? 四、产生死锁的必要条件五、线程的五种状态六、为什么调用start()方法执行run()方法七、java中有几种方法可以实现一个线程?八、wait、sleep、notify()的作用九、什么是线程池?十、线程池的优点十一、乐观与悲观十二、synchronized的作用十三、ReadWriteLook读写十四、多
十四、Redis分布式 十四、Redis分布式十四、Redis分布式1、的种类2、一个靠谱分布式需要具备的条件和刚需1、独占性2、高可用3、防死锁4、不乱抢5、重入性3、分布式1、单个Redis节点实现分布式2、LUA脚本3、redisson实现分布式4、总结4、Redis分布式-Redlock算法Distributed locks with Redis1、使用场景2、RedLo
转载 2023-10-02 21:39:43
148阅读
  • 1
  • 2
  • 3
  • 4
  • 5