锁
文章平均质量分 73
菜鸟翻身做主人
任重道远
展开
-
学习小记 -- Redis的RedLock算法
RedLock算法是Redis集群中用的分布式锁算法,在讲之前先简单回顾一下在单Redis节点中分布式锁的使用原理:我们都知到,用Redis可以实现分布式锁,在单Redis节点中,分布式锁通常使用SET lock_key NX PX 5000NX代表只在键不存在时,才对键进行设置操作。 PX 5000设置键的过期时间为5000毫秒。但是会有问题,如果Client向Master获取锁之后同步给Slave,如果Client获取锁成功之后Master节点挂掉,并且未将该锁同步到Slave,..原创 2021-08-29 16:16:47 · 772 阅读 · 1 评论 -
学习小记 -- Mysql之死锁
通过死锁是指两个或两个以上的事务在执行过程中,因争夺资源而造成的一种互相等待的现象。这里其实大家都可以想到一个解决方式,就是超时回滚:将任何的等待都转化为回滚,并且事务重新开始。的确这是一个解决办法,但是在生产环境中,这可能导致性能的下降,所带来的问题可能比死锁问题更严重,而且很难被发现并且浪费资源。InnoDB存储引擎中,参数innodb_lock_wait_timeout用来设置超时时间。若其仅通过超时后对事务进行回滚或者通过FIFIO的顺序选择回滚对象,若超时的事务所占的权重比较大,比如事务操原创 2021-06-27 16:28:09 · 139 阅读 · 0 评论 -
学习小记 -- Mysql中的锁(间隙锁、Next-Key Lock)
InnoDB存储引擎有3种行锁算法:Record Lock:单个行记录上的锁。 Gap Lock:间隙锁,锁定一个范围,但不包括记录本身。 Next-Key Lock:Gap Lock+Record Lock,锁定一个返回,并且锁定记录本身。如果InnoDB在表建立的时候没有设置任何一个索引,那么这是InnoDB存储引擎会使用隐式的主键来进行锁定。在Next-Key Lock算法下,InnoDB对于行的查询都是采用这种算法,例如一个索引有3,10,15,26四个值,那么该索引可能被Next-K原创 2021-06-24 19:30:41 · 459 阅读 · 0 评论 -
学习小记 -- Mysql中的锁
锁是数据库区别与文件系统的一个关键特性。数据库使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。对于MyISAM引擎,其锁是表锁设计。InnoDB存储引擎锁的实现和Oracle数据库非常类似,提供一致性的非锁定读、行级锁支持。行级锁没有相关额外的开销,并可以同时得到并发性和一致性。lock和latchlock和latch是两个比较容易混淆的概念,在数据库中两者都可以称为“锁”,但两者的含义截然不同。latch一般被称为闩锁(轻量级锁),因为其要求锁定的时间必须非常短,原创 2021-06-23 23:17:48 · 154 阅读 · 0 评论 -
学习小记 -- LockSupport和Condition
上节末尾我们提到了当需要阻塞或者唤醒一个线程的时候,都会用LockSupport工具类来完成相应的工作,那它具体的原理是什么样的呢?和Conditionji原创 2021-05-30 17:08:49 · 486 阅读 · 0 评论