MYSQL8的锁机制

MYSQL8的锁机制

    • 概述
      • 从对数据操作的颗粒度分:
      • 从对数据操作的类型分:
    • 行锁
    • 表锁
    • MyISAM引擎只支持`表锁`:
    • inondb引擎支持`表锁`和`行锁`:
    • inondb引擎删改查操作自动加锁过程:

概述

MYSQL8的锁机制_第1张图片
相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制,下表中罗列出了各存储引擎对锁的支持情况。
MYSQL8的锁机制_第2张图片

存储引擎 表级锁 行级锁
MyISAM 支持 不支持
InonDB 支持 支持
MEMORY 支持 不支持
BDB 支持 不支持


从对数据操作的颗粒度分:

  1. 表锁:操作时,会锁定整张表。
  2. 行锁:操作时,会锁定当前操作行。

从对数据操作的类型分:

  1. 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。
  2. 写锁(排它锁):当前操作没有完成之前,它会阻断其他写锁和读锁。

行锁

行锁:操作时,会锁定当前操作行。

MYSQL8的锁机制_第3张图片

MYSQL8的锁机制_第4张图片


表锁

表锁:操作时,会锁定整张表。
MYSQL8的锁机制_第5张图片
MYSQL8的锁机制_第6张图片


MyISAM引擎只支持表锁:

  • 对表设读锁之后,不能写表,不能再读别的表。
  • 对表设写锁后,在没释放表写锁前,,读该表会挂起。—写锁是独享锁,表写锁只能加一个

inondb引擎支持表锁行锁:

  • 删改查操作,inondb会自动加排他锁
  • 对行加锁后,修改行的过程中无法对该行写操作
  • 不影响其他行写入
  • 不影响读

inondb引擎删改查操作自动加锁过程:

默认对当前会话有效,不约束其他会话。
MYSQL8的锁机制_第7张图片

你可能感兴趣的:(数据库,mysql)