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

相关推荐
phltxy5 小时前
C语言操作符详解
java·c语言·算法
步行cgn6 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
sunshine22 girl6 小时前
Java学习一 环境配置2 安装和基本使用Idea
java·学习·intellij-idea
嘿嘿-668 小时前
Windows 一键使用 GPT-6 Astra:Codex CLI 配置教程
java·人工智能·windows·gpt·chatgpt·web
策案案案9 小时前
YOLO: 将AI Agents嵌入到IntelliJ IDEA
java·大数据·人工智能·笔记·yolo·microsoft·intellij-idea
辰烨chenye10 小时前
LeetCode Hot 100 题解 · 堆篇
java·算法·leetcode
shehuiyuelaiyuehao11 小时前
算法29,前缀和,除自身以外的数组的乘积
java·数据结构·算法
小刘在重生~11 小时前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python
随遇而安zx11 小时前
【多线程】---JMM 与 volatile 深度解析
java·多线程