MySql教程

Mysql学习笔记(一):锁类型介绍

本文主要是介绍Mysql学习笔记(一):锁类型介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

以下内容主要参考Mysql官方文档整理

MySQL server的锁主要是全局锁,行锁和表锁,通过存储引擎则可以实现不同的锁机制

MyISAM只支持到表级锁,因为MyISAM的索引与数据是分离的,其索引存储的是数据的物理地址,通过索引无法找到数据,就只能把整个表锁起来

innoDB的锁模型:

  • 行级别的共享(s)与独占锁(x):s锁之间不互斥,s锁与x锁互斥,x锁之间互斥

  • 意向锁:分为意向共享锁(IS)和意向独占锁(IX),表级锁。在事务获取表中的s锁之前需要先获得IS锁或者更强级别的锁;在事务获取表中的x锁之前需要先获得IX锁,参考。表级锁的互斥关系如下:

        

 

  • 记录锁:索引记录上的锁,防止对行记录的增删改

  • 间隙锁:在两行索引记录间的锁,或者在第一行记录之前范围的锁,又或者是最后一行记录之后的范围的锁。用于特定隔离级别如RR级别。产生间隙锁的条件:

    (1) 使用非唯一索引查询单条记录,锁住前面的间隙

    (2) 使用多列唯一索引,锁住中间的间隙

    (3) 唯一索引锁住多行记录

    更多理解请参考

  • Next-Key Locks:其实就是记录锁+间隙锁,注意是一个前开后闭的区间。

    关于next-key lock的相关规则参考

  • 其他锁比较特殊,不赘述

这篇关于Mysql学习笔记(一):锁类型介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!