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

相关推荐
不愿是过客1 天前
java实战干货——长方法深递归
java
小北方城市网1 天前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
六义义1 天前
java基础十二
java·数据结构·算法
毕设源码-钟学长1 天前
【开题答辩全过程】以 基于SpringBoot的智能书城推荐系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
笨手笨脚の1 天前
深入理解 Java 虚拟机-03 垃圾收集
java·jvm·垃圾回收·标记清除·标记复制·标记整理
莫问前路漫漫1 天前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程
九皇叔叔1 天前
【03】SpringBoot3 MybatisPlus BaseMapper 源码分析
java·开发语言·mybatis·mybatis plus
挖矿大亨1 天前
c++中的函数模版
java·c++·算法
a程序小傲1 天前
得物Java面试被问:RocketMQ的消息轨迹追踪实现
java·linux·spring·面试·职场和发展·rocketmq·java-rocketmq
青春男大1 天前
Redis和RedisTemplate快速上手
java·数据库·redis·后端·spring·缓存