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,这样的话不管这个表有多少数据,同一时间有且仅有一个线程可以去操作这一张表,所以经常发生锁等待,悲观锁非常重,但数据一定不会出问题。

相关推荐
wanderist.7 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
腻害兔8 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:IM 即时通讯模块,一个被低估的「全功能聊天系统」
java·前端·vue.js·产品经理·ai编程
心念枕惊9 小时前
.NET CORE 授权进阶-角色、策略与动态权限实现
java·前端·.netcore
景同学10 小时前
把 AI 用到线上运维:可行、有效,前提是喂足信息——一次 Full GC 排障实录
java·人工智能·后端
C++、Java和Python的菜鸟11 小时前
第7章 后端Web实战(Tlias系统)
java
憧憬成为java架构高手的小白11 小时前
黑马八股--spring框架学习
java·学习·spring
唐青枫12 小时前
Java Picocli 实战详解:用注解写出好用的命令行工具
java
X-⃢_⃢-X12 小时前
四、OpenFeign远程调用
java·微服务·springboot·springcloud
减瓦12 小时前
深入 Quarkus:云原生时代 Java 的重生之路
java·开发语言·云原生
杨运交12 小时前
[053][核心模块]Java枚举缓存与ORM集成实践
java·开发语言·缓存