当前位置:   article > 正文

MySQL--行级锁与表级锁_mysql表级锁和行级锁

mysql表级锁和行级锁

原文网址:MySQL--行级锁与表级锁_IT利刃出鞘的博客-CSDN博客

简介

说明

本文介绍MySQL的行级锁与表级锁。

锁的类型

锁类型

死锁

锁定粒度(并发性)

适用场景

表级锁

不会死锁

最大,发生锁冲突的概率最大(并发性低)

场景1:读多写少;

场景2:写特别多。若用行锁,会导致事务执行效率低,可能造成其他事务长时间锁等待和锁冲突。

行级锁

会死锁

最小,发生锁冲突的概率最低(并发性最高)

并发量大。

页面锁

会死锁

居中,并发一般

不同的存储引擎的锁机制

存储引擎支持的锁说明
InnoDB表级锁、行级锁(默认)。InnoDB行级锁基于索引实现。若查询字段无索引或索引失效,则使用表锁。
MyISAM表级锁
MEMORY表级锁
BDB表级锁、页面锁

行锁

概述

说明

行锁只在InnoDB中。有两种锁:共享锁(Share Lock)(也称为:读锁)、独占锁(Exclusive Lock)。共享锁也称为:读锁;独占锁也称为:写锁。

InnoDB实现了以下两种类型的行锁。意向锁是InnoDB自动加的,不需用户干预。

  • 共享锁(S):允许获得共享锁的事务去读一行,阻止其他事务获得相同数据集的排他锁。
  • 排他锁(X):允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享锁和排他锁。另外,为了允许行锁和表锁共存,实现多粒度锁机制,InnoDB还有两种内部使用的意向锁(Intention Locks),这两种意向锁都是表锁。
  • 意向共享锁(IS):事务打算给数据行加行共享锁,事务在给一个数据行加共享锁前必须先取得该表的IS锁。(Intention Share)
  • 意向排他锁(IX):事务打算给数据行加行排他锁,事务在给一个数据行加排他锁前必须先取得该表的IX锁。(Intention Exclusive)

上述锁模式的兼容情况具体如下表所示。如果一个事务请求的锁模式与当前的锁兼容,InnoDB就将请求的锁授予该事务;反之,如果两者不兼容,该事务就要等待锁释放。

上边只是部分内容,为便于维护,本文已迁移到此地址:MySQL-行级锁与表级锁 - 自学精灵

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/575462
推荐阅读
相关标签
  

闽ICP备14008679号