锁
2025-12-31 14:57:29 0 举报
AI智能生成
锁相关解释(数据库锁、程序锁)
作者其他创作
大纲/内容
数据库锁
表级锁
锁定颗粒度大,锁的冲突概率大,并发度低
好处是不会出现死锁、开销小、获取锁和释放锁的速度很快
使用表级锁定的主要是MyISAM,MEMORY,CSV等一些非事务性存储引擎,适用于以查询为主,少量更新的应用
行级锁
InnoDB行级锁类型
共享锁
排他锁
意向锁
页级锁
悲观锁
乐观锁
锁问题
InnoDB存储引擎什么时候会锁住整张表(什么时候使用行级锁),什么时候或只锁住一行呢(使用行锁)
什么时候使用行级锁?什么时候使用表级锁
行级锁锁的是什么?行级锁怎么实现加锁
mysql读锁和写锁?
常见的锁算法:
什么时候会释放锁?
事务
脏写问题
脏读问题
重复读问题
幻读问题
问题
分布式锁
悲观锁
乐观锁
分布式锁
基于数据库分布式锁
基于redis分布式锁
基于zookeeper的分布式锁
可重入锁
可重入锁,也叫做递归锁,是指在同一个线程在调外层方法获取锁的时候,再进入内层方法会自动获取锁。
自旋锁
是采用让当前线程不停地在循环体内执行,当循环的条件被其他线程改变时才能进入临界区
独享锁
也有人叫它排他锁。无论读操作还是写操作,只能有一个线程获得锁,其他线程处于阻塞状态
共享锁
共享锁是指允许多个线程同时持有锁,一般用在读锁上
读锁/写锁
公平锁/非公平锁
公平锁
多个线程按照申请锁的顺序去获得锁,所有线程都在队列里排队,先来先获取的公平性原则
非公平锁
多个线程不按照申请锁的顺序去获得锁,而是同时以插队方式直接尝试获取锁,获取不到(插队失败),会进入队列等待(失败则乖乖排队),如果能获取到(插队成功),就直接获取到锁
可中断锁/不可中断锁
可中断锁
指一个线程因为没有获得锁在阻塞等待过程中,可以中断自己阻塞的状态
不可中断锁
如果锁被其他线程获取后,当前线程只能阻塞等待。如果持有锁的线程一直不释放锁,那其他想获取锁的线程就会一直阻塞
分段锁
分段锁其实是一种锁的设计,目的是细化锁的粒度,并不是具体的一种锁,对于ConcurrentHashMap 而言,其并发的实现就是通过分段锁的形式来实现高效的并发操作。
锁升级(无锁|偏向锁|轻量级锁|重量级锁)
无锁
偏向锁
轻量级锁
重量级锁
锁优化技术(锁粗化、锁消除)
锁粗化
就是告诉我们任何事情都有个度,有些情况下我们反而希望把很多次锁的请求合并成一个请求,以降低短时间内大量锁请求、同步、释放带来的性能损耗。
锁消除
指的是在某些情况下,JVM 虚拟机如果检测不到某段代码被共享和竞争的可能性,就会将这段代码所属的同步锁消除掉,从而到底提高程序性能的目的。
Redis分布式锁
https://note.youdao.com/s/br7exRKe redis分布式锁介绍
0 条评论
下一页