Mysql的锁类型有哪些?
锁的分类:
1.基于锁的属性分类:共享锁、排他锁。
2.基于锁的粒度分类:行级锁(innodb)、表级锁(innodb、myisam)、页级锁(innodb)、记录所、间隙锁、临键锁。
3.基于锁的状态分类:意向共享锁、意向排他锁。
锁的介绍:
1.共享锁(share lock):共享锁又称读锁,简称S锁;当一个事务为数据加上读锁之后,其他事务只能对该数据加读锁,而不能加写锁,直到所有的读锁释放之后其他事务才能对其加写锁。共享锁的特性主要是为了支持并发的读取数据,读取数据时不支持修改,避免出现重复读的问题。
2.排他锁(exclusive lock):排他锁又称写锁,简称X锁;当一个事务为数据加上写锁之后,其他请求不能再为数据加任何锁,直到该锁释放后,其他事务才能对数据进行加锁。排他锁的目的是在数据修改的时候,不允许其他人同时修改数据,也不允许其他人读取数据,避免了出现脏数据和脏读的问题。
3.表锁(table lock):表锁是指上锁的时候锁住的是整个表,当下一个事务访问该表时,必须等前一个事务释放了锁才能对该表进行访问。特点:粒度大,加锁简单,容易冲突。
4.行锁:行锁是指上锁的时候锁住的是表的某一行或多行记录,其他事务访问同一张表时,只有被锁住的记录不能访问,其他的记录可以正常访问。特点:粒度小,加锁比较麻烦,不容易冲突,相比表锁支持的并发要高。
5.记录锁:记录锁也是行锁中的一种,只不过记录锁只能锁住表中的某一条记录,记录锁是说事务在加锁之后数据可以避免在查询的时候被修改的重复读问题,也避免了在修改的事务未提交前被其他事务读物的脏读问题。
6.页锁:页级锁是Mysql中粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多;行级锁冲突少,但速度慢。所以取了折衷的页级锁,一次锁定相邻的一组记录。特点:开销和加锁时间介于表锁和行锁之间,会出现死锁;锁的粒度介于表锁和行锁之间,并发度一般。
7.间隙锁:是属于行锁的一种。间隙锁是在事务加锁后其锁住的是表记录的一个区间,当表的相邻id之间出现空隙则会形成一个区间,遵循左开右闭的原则。范围查询并且查询未命中记录,查询条件必须命中索引,间隙锁只会出现在REPEATABLE_READ(重复读)的事务级别中。
8.临键锁:也属于行锁的一种,并且它是InnoDB的行锁默认算法,总结来说他就是记录锁和间隙锁的组合,临键锁会把查询的记录锁住,同时也会把该范围查询内的所有间隙空间也锁住,再之它会把相邻的下一个区间也锁住。
更多精彩内容关注博客原站:盐鱼律己
Mysql的锁类型有哪些?相关推荐
- 一分钟理清Mysql的锁类型——《深究Mysql锁》
延伸阅读: 三分钟了解Mysql的表级锁 五分钟了解Mysql的行级锁 一分钟深入Mysql的意向锁 我们常用的存储引擎就MyISAM和InnoDB.MyISAM存储主要就简单的表级别锁,下面只说In ...
- mysql innodb 锁类型_详细介绍MySQL InnoDB存储引擎各种不同类型的锁
本文中,我们详细介绍MySQLInnoDB存储引擎各种不同类型的锁,以及不同SQL语句分别会加什么样的锁. 阅读提示 1.本文所参考的MySQL文档版本是8.0,做实验的MySQL版本是8.0.13 ...
- 什么是MySQL锁?有哪些锁类型?如何使用?
什么是MySQL锁?有哪些锁类型?如何使用? Mysql中有哪几种锁? 行级锁:锁定力度小,发生锁冲突概率低,实现并发度高,开销大,加锁慢,并发度高 页级锁:加锁时间比行锁长,页级锁开销介于表锁和行锁 ...
- MySQL锁类型及作用
MySQL数据库有哪些锁? MySQL数据库锁的应用场景有哪些?主要作用是什么? Shared and Exclusive Locks(共享锁与排他锁) Intention Locks(意向锁) Re ...
- mysql锁与程序锁_sql 锁类型与锁机制
SQL Server锁类型(SQL)收藏 1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁. 2. NOLOCK:不添加共享锁和排它锁,当这个选项生 ...
- mysql 视图锁_Oracle数据库的锁类型及相关视图
Oracle数据库的锁类型 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data locks,数据锁),用于保护数据的完整性:DDL锁(dictionary locks,字典 ...
- mysql中各种类型的锁
文章目录 写在前面 锁类别 行级锁 表级锁 抽象概念的锁 悲观锁 乐观锁 实际中的锁 共享锁 意向共享锁 排他锁 意向排他锁 排他锁中的各种锁算法 记录锁 间隙锁 邻键锁 辅助索引锁住主键索引 mys ...
- mysql数据锁的类型_MySQL数据库锁类型
锁概念: 当高并发访问同一个资源时,可能会导致数据不一致,需要一种机制将用户访问数据的顺序进行规范化,以保证数据库数据的一致性.锁就是其中的一种机制. 一个栗子 :以买火车票为例,火车票可面向广大消费 ...
- mysql平均锁_MySQL锁情况分析
TIPS 本文基于MySQL 8.0.22 分析锁的三种方式 方式1: show status like '%innodb_row_lock%'; 可查看行锁相关的统计信息 方式2: SHOW ENG ...
- mysql乐观锁总结和实践
2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章<MySQL悲观锁总结和实践>谈到了MySQL悲观锁,但是悲观锁并不是适用于任何场景,它也有它存在的一些 ...
最新文章
- Spring Cloud Alibaba【Nacos 服务治理】 高可用保证:Nacos 如何有效构建注册中心集群
- 一文解读Tensor到底是个啥玩意儿?(附代码)
- 9位AI教授总结2017年:技术变得平民化,但商业竞争在不断升级
- OpenCV与Python之图像阈值化
- Yii的控制器等名称获取
- 打印某个user在指定时间段内做过的personalization detail
- mysql sql 备份数据_mysql怎么进行数据库备份和还原,以及自动备份
- php创建实例对象数组,php – 使用arguments数组创建新的对象实例
- 计算机网络性能(2)
- Folx Pro苹果BT磁力多线程下载工具
- DHCP报文分析(三级网络技术)
- python如何表示正整数_python 正整数
- js 彻底理解回调函数
- Gartner点将分布式文件存储,浪潮存储缘何一鸣惊人?
- 原生 html 绘制表格
- 人工智能 —— 语义网络表示法
- 计算摄影:相机成像流程 —— ISP
- agv系统介绍_AGV物流系统工作流程及模块介绍
- Mongodb(学习总结)
- php 制作在线音乐网站,音乐网站程序,手把手教会你做音乐“网站”