Lock is easy

锁有四种:表锁、行锁、乐观锁、悲观锁

MySql存储引擎:MyIsAm、InnDb(mysql占九成,其他占一成,主攻mysql)

表锁:公司中一张表可能有几亿条数据,数据量巨大,仅操作一条数据时,将整块表都锁上,所以一般情况不用表锁,太重了。

行锁:操作DB用的行锁,假设7亿条数据,就有7亿个行锁。

乐观锁:假设没有人和你抢锁,GBM内存中CAS(compare and swap 比较并交换),假设7亿条数据,对每条数据操控时,都会给sql后加入一个where条件,其中有个version字段,即我每进行一次update操作都会把这个version+1,当我每次操作的时候都会进行一个判断即where中version=某个值,当不等于时候,这条数据便无法操作,因为这条数据的version值有其他线程改掉了

悲观锁:互联网公司基本上不用,使用场景银行,因为对数据要求非常高,用乐观锁可能出问题,悲观锁不可能出问题,直接锁表,可以把悲观锁视为一个表锁,比如对于select语句,在其后加入一个for update,这样的话不管这个表有多少数据,同一时间有且仅有一个线程可以去操作这一张表,所以经常发生锁等待,悲观锁非常重,但数据一定不会出问题。

相关推荐
我是咸鱼不闲呀4 小时前
力扣Hot100系列22(Java)——[图论]总结(岛屿数量,腐烂的橘子,课程表,实现Trie(前缀树))
java·leetcode·图论
1104.北光c°4 小时前
深入浅出 Elasticsearch:从搜索框到精准排序的架构实战
java·开发语言·elasticsearch·缓存·架构·全文检索·es
MSTcheng.4 小时前
【优选算法必修篇——位运算】『面试题 01.01. 判定字符是否唯一&面试题 17.19. 消失的两个数字』
java·算法·面试
蹦哒5 小时前
Kotlin 与 Java 语法差异
java·python·kotlin
左左右右左右摇晃5 小时前
Java并发——并发编程底层原理
java·开发语言
一个有温度的技术博主5 小时前
Redis系列八:Jedis连接池在java中的使用
java·redis·bootstrap
cyforkk5 小时前
Java 并发编程教科书级范例:深入解析 computeIfAbsent 与方法引用
java·开发语言
后青春期的诗go5 小时前
泛微OA-E9与第三方系统集成开发企业级实战记录(八)
java·接口·金蝶·泛微·oa·集成开发·对接
dreamxian5 小时前
苍穹外卖day09
java·spring boot·tomcat·log4j·maven
剑海风云5 小时前
JDK 26之安全增强
java·开发语言·安全·jdk26