MySQL锁的分类及算法

MySQL中锁包含表级锁和行级锁两个大类。表级锁是意向锁,有IX,IS,一般在行级锁之前使用;行级锁则是传统的S和X锁。这些锁的兼容特性如下:

IS IX S X
IS 兼容 兼容 兼容 不兼容
IX 兼容 兼容 不兼容 不兼容
S 兼容 不兼容 兼容 不兼容
X 不兼容 不兼容 不兼容 不兼容

InnoDB存储引擎中行锁算法有3种,分别是:
* Record Lock 单个行记录上锁

  • Gap Lock 间隙锁,锁定一个范围,但不包含记录本身
  • Next-Key Lock GapLock+RecordLock

Record Lock比较容易理解,GapLock需要注意的是,它锁定的范围,既包含左间隙,也包含右间隙。Gap Lock的作用,是为了阻止多个事务将记录插入到同一个范围内,从而导致幻影读。

原文地址:http://blog.51cto.com/10705830/2162400

时间: 2024-10-12 10:23:02

MySQL锁的分类及算法的相关文章

二、锁的分类及特性

[转]锁的分类及特性 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问时变得有序所设计的一种规则. 对于任何一种数据库来说都需要有相应的锁定机制,所以 MySQL 自然也不能例外. MySQL 数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样. 为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别. MySQL 各存储引擎使用了三种类型(级别

深入理解mysql锁与事务隔离级别

一.锁 1.锁的定义 锁即是一种用来协调多线程或进程并发使用同一共享资源的机制 2.锁的分类 从性能上分类:乐观锁和悲观锁 从数据库操作类型上分类:读锁和写锁 从操作粒度上分类:表锁和行锁 2.1 从性能上分类 2.1.1 乐观锁 乐观锁顾名思义就是操作的时候很乐观,认为操作不会产生并发问题(不会有其他线程对数据进行修改),因此不会上锁.但是会在更新时判断其他线程再这之前有没有对数据进行修改,一般会使用版本号机制或CAS算法实现. 2.1.1.1 版本号机制 实现方式: 取出记录时,获取当前ve

MySQL锁和隔离机制

一:MySQL锁 二:MySQL事务 三:MySQL隔离级别 1.1为什么要有锁? 因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对某张表的某条数据或某些数据进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作进行控制,因此就有了锁的概念. 1.2锁的分类     1.2.1按对数据的操作类型         LOCK TABLES tb_namelock_type{READ|WRITE};         UNLOCKTABLES

13.MySQL锁机制

锁的分类 从对数据的类型 (读\写)分: 1.读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响 2.写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁 从对数据操作的粒度分: 1.表锁 2.行锁 表锁(偏读) 1.偏向MyISAM存储引擎,开销小,加锁快:无死锁:锁的粒度大,发生锁冲突的概率最高,并发度最低 2.MyISAM 在执行查询(SELECT)语句前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE/DELETE/INSERT等)前, 会自动给涉及的

MySQL锁的常见误区

今天给大家分享的内容是MySQL锁的常见误区.MySQL的锁包括两种lock和latch.latch的面向对象是线程,主要用来管理数据库临界资源的并发访问,锁的时间非常短,也不会产生死锁.不需要人工干预,所以这里我们不再做介绍.而lock则是面向事务的,操作的对象是数据库的表.页及行,用来管理并发线程对共享资源的访问,会产生死锁.因为我们现在数据库使用的是innodb存储引擎.所以今天主要给大家介绍的是innodb的lock的常见几个误区. 在介绍之前,我们需要再了解lock的几个概念: 行锁:

[转帖]深入理解 MySQL—锁、事务与并发控制

深入理解 MySQL—锁.事务与并发控制 http://www.itpub.net/2019/04/28/1723/ 跟oracle也类似 其实所有的数据库都有相同的机制.. 学习了机制才能够更好的工作,. 数据和云 2019-04-28 10:45:07 本文共11796个字,预计阅读需要30分钟. 本文对 MySQL 数据库中有关锁.事务及并发控制的知识及其原理做了系统化的介绍和总结,希望帮助读者能更加深刻地理解 MySQL 中的锁和事务,从而在业务系统开发过程中可以更好地优化与数据库的交互

锁的分类以及相关讲解

1.锁的分类 自旋锁: 线程状态及上下文切换消耗系统资源,当访问共享资源的时间短,频繁上下文切换不值得.jvm实 现,使线程在没获得锁的时候,不被挂起,转而执行空循环,循环几次之后,如果还没能获得锁,则被挂起 阻塞锁:阻塞锁改变了线程的运行状态,让线程进入阻塞状态进行等待,当获得相应的信号(唤醒或者时间) 时,才可以进入线程的准备就绪状态,转为就绪状态的所有线程,通过竞争,进入运行状态 重入锁:支持线程再次进入的锁,就跟我们有房间钥匙,可以多次进入房间类似 读写锁: 两把锁,读锁跟写锁,写写互斥

[转帖]2019-03-26 发布 深入理解 MySQL ——锁、事务与并发控制

深入理解 MySQL ——锁.事务与并发控制 https://segmentfault.com/a/1190000018658828 太长了 没看完.. 数据库 并发  mysql 639 次阅读  ·  读完需要 46 分钟 21 本文首发于 vivo 互联网技术微信公众号 https://mp.weixin.qq.com/s/JF...作者:张硕 本文对 MySQL 数据库中有关锁.事务及并发控制的知识及其原理做了系统化的介绍和总结,希望帮助读者能更加深刻地理解 MySQL 中的锁和事务,从

面试必问的MySQL锁与事务隔离级别

之前多篇文章从mysql的底层结构分析.sql语句的分析器以及sql从优化底层分析, 还有工作中常用的sql优化小知识点.面试各大互联网公司必问的mysql锁和事务隔离级别,这篇文章给你打神助攻,一飞冲天. 锁定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除了传统的计算资源(如 CPU.RAM.I/O等)的争用以外,数据也是一种需要用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数据库需要解决的问题,锁冲突也是影响数据库并发性能的一个重要因素. 锁分类 从性能