mysql之innodb的锁分类介绍

 更新时间:2012年11月20日 15:51:11   作者:  
本文将介绍mysql之innodb的锁分类,需要了解更多的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一、innodb行锁分类

record lock:记录锁,也就是仅仅锁着单独的一行
gap lock:区间锁,仅仅锁住一个区间(注意这里的区间都是开区间,也就是不包括边界值。
next-key lock:record lock+gap lock,所以next-key lock也就半开半闭区间,且是下界开,上界闭。 www.jb51.net
next-key 锁定范围:(负无穷大,最小第一记录],(记录之间],(最大记录,正无穷大)

二、语句锁定情况分析

SELECT ... FROM ... FOR UPDATE对读遇到的所有索引记录设置独占的next-key锁定。
INSERT INTO ... VALUES (...)对被插入的行设置独占锁定。注意,这不是一个next-key锁定,并且不阻止其它用户在已插入行之前的间隙插入。如果发生重复键错误,对重复的索引记录设置共享锁定。
· 在一个表上初始化之前指定的AUTO_INCREMENT列之时,InnoDB在与AUTO_INCREMENT列相关联的索引的末尾设置独占锁定。在访问自动增长计数器中,InnoDB使用专用的表锁定模式AUTO-INC,其中锁定仅持续到当前SQL语句的结束,而不是到整个事务的结束。InnoDB取回先前初始化的AUTO_INCREMENT列的值而不设定任何锁定。

INSERT INTO T SELECT ... FROM S WHERE ... 对每个插入到T的行设置独占(非next-key)锁定。它在S上把搜索当作一个持续读,但是如果MySQL二进制日志功能被打开,它就对S设置一个共享的next-key锁
定。InnoDB在后一种情况不得不设置锁定:在从一个备份的前滚恢复中,每个SQL语句不得不以与它最初被执行的方式完全同样的方式执行。

· CREATE TABLE ... SELECT ... 把SELECT当作一个持续读来执行,或者带着共享锁定来执行,如前面的条目所述。
· 如果唯一键没有冲突,REPLACE象一个插入一样被做。另外,对必须更新的行设置一个独占的nextkey锁定。
· UPDATE ... WHERE ... 对搜索遇到的每个记录设置一个独占的next-key锁定。
· DELETE FROM ... WHERE ... 对搜索遇到的每个记录设置一个独占的next-key锁定。
· 如果对一个表定义FOREIGN KEY约束,任何需要检查约束条件的插入,更新或删除对它看着检查约束的记录设置共享行级锁定。InnoDB在约束失败的情况下也设置这些锁定。

相关文章

  • MySQL安装starting?the?server失败的2种解决办法(推荐!)

    MySQL安装starting?the?server失败的2种解决办法(推荐!)

    MySQL是一个非常强大的关系型数据库,但有些初学者在安装配置的时候,遇到种种的困难,下面这篇文章主要给大家介绍了关于MySQL安装starting?the?server失败的2种解决办法,需要的朋友可以参考下
    2023-04-04
  • phpstudy无法启动MySQL服务的完美解决办法

    phpstudy无法启动MySQL服务的完美解决办法

    学习php当然是要先安装好运行环境了,phpstyudy是一个运行php的集成环境,一键安装对新手很友好,下面这篇文章主要给大家介绍了关于phpstudy无法启动MySQL服务的完美解决办法,需要的朋友可以参考下
    2022-06-06
  • sysbench对mysql压力测试的详细教程

    sysbench对mysql压力测试的详细教程

    众所周知sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。下面这篇文章就来详细介绍sysbench如何对mysql进行压力测试,有需要的可以一起来看看。
    2016-09-09
  • MySQL获取当前时间、年月与年月日实例代码

    MySQL获取当前时间、年月与年月日实例代码

    日期和时间函数部分也是我们日常工作中使用频率比较高的一部分,下面这篇文章主要给大家介绍了关于MySQL获取当前时间、年月与年月日的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 详解数据库varchar与char有哪些区别

    详解数据库varchar与char有哪些区别

    CHAR和VARCHAR是MySQL中两种最重要的字符串类型,两者的原理和区别也是面试中高频问题,如果是你,会从哪几个角度去回答这个问题呢?今天,我给大家总结了一下相关知识点,感兴趣的朋友一起看看吧
    2023-10-10
  • windows mysql 自动备份的几种方法汇总

    windows mysql 自动备份的几种方法汇总

    本篇文章主要对windows mysql 自动备份的几种方法进行整理,具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • 微信开发中mysql字符编码问题

    微信开发中mysql字符编码问题

    本文给大家介绍微信开发过程中mysql字符编码问题,本文介绍的非常详细,感兴趣的朋友一起来学习吧
    2015-08-08
  • MySQL中文乱码问题解决方案

    MySQL中文乱码问题解决方案

    这篇文章主要介绍了MySQL中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • mysql?8.0.27?解压版安装配置方法图文教程

    mysql?8.0.27?解压版安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql?8.0.27?解压版安装配置方法图文教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • MySQL的语法及其使用指南

    MySQL的语法及其使用指南

    数据库的选取,创建,丢弃和变更 数据表和索引的创建,变更和丢弃从数据表检索信息
    2008-04-04

最新评论

?


http://www.vxiaotou.com