当前位置:网站首页>Mysql四种锁
Mysql四种锁
2022-07-27 16:08:00 【zh_Tnis】
行级锁:
- 在mysql中,行级锁不是直接锁记录,而是锁索引,索引分为主键索引和非主键索引。
- 一条SQL语句操作了主键索引,那么MySQL将主键索引锁定。
- 一条SQL语句操作了非主键索引,那么MySQL先锁定非主键索引,再锁定相关的非主键索引。
- 在InnoDB中,如果SQL语句没有涉及索引,则会通过隐藏的聚簇索引来对记录加锁。也就是没有通过索引搜索数据,那么InnDB就会对表中所有的数据进行加锁。无索引,查找记录时候需扫描全表,扫描全表,则锁定表。
- row-level loking ,锁定一行记录
- 开销大,加锁满,会死锁。
- 索粒度小,发生锁冲突概率小, 并发效率高。
- 适合并发写。
表级锁:
- 表级锁,一般是指表结构共享锁锁,是不可对该表执行DDL操作,但对DML操作不限制。行级锁之前需要先加表结构共享锁。如果用表级锁,其他客户将不能进行查询操作,因此开发中一般使用行级锁。
- table-level locking,锁定整张表。
- 开销小,加锁快,不会死锁。
- 锁粒度大,发生锁冲突概率大,并发效率低。
- 适合查询。
乐观锁:
- 乐观锁认为并发操作很难发生,但并不是一定不会发生,所有存在着措施对该情况进行应对,也就是版本号version,每修改一次数据,version改变一次。
- 例如,A窗口在年月日确定的某天12:00阶段操作更新了表中的数据,12:02按下确定键。但是同年月日的12:01阶段B窗口更新并确定了该表中的数据,那么该表的版本号version已经改变了,那么于此同时A窗口操作的数据更新失败。这也表示并发问题已经发生,此次操作需要回滚。
- 进行数据读取时,不加锁。
悲观锁:
- 和乐观锁相反,悲观锁认为并发问题极易发生。
- A窗口在进行数据更新操作时,B窗口不能操作该数据,B窗口要想更新数据,必须等A窗口操作完成才可以。
- 进行数据操作时,无论读或写,都会对记录进行加锁,为了防止其他线程对数据进行更改。
边栏推荐
- Evaluation index of machine learning (II) -- classification evaluation index
- Evaluation index of machine learning (I) -- regression evaluation index
- 施耐德电气、欧莱雅等企业巨头如何开放式创新?DEMO WORLD世界创新峰会揭秘
- Class not found: “com.parkManagement.dao.DaoTest 测试找不到测试类
- 快速获取网站媒体资源方法
- 宣布收购文晔30%股份,大联大意欲何为?
- zabbix6.0的安装部署
- golang 自定义once,当出现error第二次重新设置
- [user article] examples of P4 consolidation practice guide disassemble resolve
- 登录页面tableLayout(表格布局)
猜你喜欢

Machine learning: IOU of concept understanding

Telecommuting can be easily realized in only three steps

IDEA打包war包与war包位置

Evaluation index of machine learning (II) -- classification evaluation index

2022 safety officer-a certificate examination questions and online simulation examination

Understand │ what is cross domain? How to solve cross domain problems?

浅论分布式训练中的recompute机制

Set up SSO based on SAML 2.0 in salesforce and enable JIT user provisioning (between SF orgs / between SF org and experience cloud / other IDPs)

Code compliance: five reasons why developers use helix QAC

多表查询
随机推荐
Golang Chan implements mutual exclusion
登录页面tableLayout(表格布局)
联发科首款5G SoC来了!A77+G77+APU3.0,11月26日正式发布!
Know things by learning | build a real-time anti plug-in mechanism from 0 to 1 to supplement the offensive and defensive power of mobile games in multiple dimensions
golang 自定义once,当出现error第二次重新设置
Detailed explanation of browser caching mechanism
MySql代码数据库创建 停车管理系统 外键
【学习笔记】lombok的@Builder注解
vue使用keep-alive实现页面缓存
canvas根据坐标点绘制图形
Error launching IDEA
国巨斥资18亿美元收购竞争对手Kemet,交易或在明年下半年完成
【学习笔记】Redis中有序集合zset的实现原理——跳表
Knowing things by learning | app slimming down, the way of safety reinforcement under the new generation AAB framework
zabbix6.0的安装部署
Localization within Communities
多线程导入数据并生成错误文件用redis存储
ES查询限制10000条数据解决方法
IDEA打包war包与war包位置
华为Mate30 Pro 5G拆解:自研芯片占比过半,美系芯片依然存在!