美文网首页
mysql 锁概述

mysql 锁概述

作者: 乐乐J | 来源:发表于2020-10-09 13:59 被阅读0次
行锁
shared Locks 共享锁

也叫读锁

Exclusive Locks 排他锁

也叫写锁

表锁 意向锁

数据库自己维护的,使用行锁前,数据库会先给表加表锁
它并不会真正的给表加上锁,只是会加上一个标志。
主要是能让其它事务知道,表里面有数据被加锁了。不用去每一行数据看是否有锁。

意向共享锁
意向排它锁

锁到底是锁住了什么?
行 列 还是表?

锁住的就是索引,没有索引rowId的方式,全表扫描时会把所有的rowId全部锁住

无索引的情况:
表象时整张表,如上
主键索引的情况:
当然会锁住一行

辅助索引+主键索引的情况:
辅助索引和主键索引都会锁住,因为要通过辅助索引找到主键索引再来找到数据

锁定范围(区间划分):
记录锁 实际存在的主键的值(record)

    唯一性索引等值查询,精准匹配

间隙锁 由实际记录划分开的不存在数据的区间(gap)

    记录不存在时,where条件不包含任何一个存在的键值
    
    **间隙锁相互之间不冲突**

临键锁 就是左开右闭的gap(next-key)
    
**默认的锁应该是临键锁**,视情况会退化为上面的那种锁  

就是靠临键锁的方式锁住了下一个空间,这样其它事务就没法插入了。靠这个就**解决了幻读**。

事务隔离级别的实现(RR级别)

不加锁的select MVCC
DML语句和加锁的读,使用上面的三种锁

**RC下面的情况就只有record Lock**

用RC可以换来,UPDATE DELETE 没有命中索引时不锁表,UPDATE半一致性读

字符怎么排序?
ASCII码排序的

死锁(说白了就是两个事务互相等待)
锁的默认超时时间
innodb_lock_wait_timout = 50s

数据库会自动检测到死锁的发生

检测条件 图算法
1)互斥
2)不可剥夺
3)形成等待环路

infomation_schema库
INNODB_TRX表里面有所有事务的信息
INNODB_LOCKS有锁的信息

相关文章

  • MySQL锁详解

    Mysql****锁机制 锁概述 锁分类 MySql锁 目的了解锁的用途了解锁的危害根据锁的一个概述进一步了解优化...

  • mysql 锁概述

    行锁 shared Locks 共享锁 也叫读锁 Exclusive Locks 排他锁 也叫写锁 表锁 意向锁 ...

  • MySQL表级锁和行级锁

    MySQL学习笔记(五):MySQL表级锁和行级锁 一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最...

  • MySQL 锁之一——行锁

    1、概述 MySQL 锁以粒度划分可以分为三类:全局锁、表级锁和行级锁,MySQL 中的行级锁由存储引擎实现,并不...

  • 总结Mysql中的锁

    MySQL中的锁 概述 MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不会...

  • MySQL学习

    MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。...

  • MySQL解锁与锁表

    MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。...

  • MySQL 锁之二——表锁

    1、概述 MySQL 表级锁是以单个表为粒度的锁,InnoDB 和 MyISAM 引擎都支持表级锁; 2、表锁分类...

  • MySQL锁简介

    备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL 事务 一.MySQL锁概述 数据库锁定...

  • MySQL中锁的分类及介绍

    概述 MySQL中的锁比较繁杂,但其实MySQL中的锁本质上并没有那么多,只是我们站在不同维度上对锁进行的分类,本...

网友评论

      本文标题:mysql 锁概述

      本文链接:https://www.haomeiwen.com/subject/boslpktx.html