当前位置:  数据库>mysql

mysql之innodb的锁分类介绍

    来源: 互联网  发布时间:2014-10-04

    本文导语:  一、innodb行锁分类 record lock:记录锁,也就是仅仅锁着单独的一行 gap lock:区间锁,仅仅锁住一个区间(注意这里的区间都是开区间,也就是不包括边界值。 next-key lock:record lock+gap lock,所以next-key lock也就半开半闭区间,且...

一、innodb行锁分类

record lock:记录锁,也就是仅仅锁着单独的一行
gap lock:区间锁,仅仅锁住一个区间(注意这里的区间都是开区间,也就是不包括边界值。
next-key lock:record lock+gap lock,所以next-key lock也就半开半闭区间,且是下界开,上界闭。 www.
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 提示INNODB错误的解决方法
  • MySQL InnoDB和MyISAM数据引擎的差别分析
  • MySQL存储引擎MyISAM与InnoDB的9点区别
  • Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 的问题
  • MySQL数据库MyISAM存储引擎转为Innodb的方法
  • 关于mysql中innodb的count优化问题分享
  • 深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较
  • mysql 有关“InnoDB Error ib_logfile0 of different size”错误
  • MYSQL无法启动提示: Default storage engine (InnoDB) is not available的解决方法
  • MySQL存储引擎简介及MyISAM和InnoDB的区别
  • mysql5.5与mysq 5.6中禁用innodb引擎的方法
  • MySQL禁用InnoDB引擎的方法
  • MySQL存储引擎 InnoDB与MyISAM的区别
  • 可以改善mysql性能的InnoDB配置参数
  • mysql中engine=innodb和engine=myisam的区别介绍
  • 关于mysql innodb count(*)速度慢的解决办法
  • MySQL不支持InnoDB的解决方法
  • MySQL数据库INNODB表损坏修复处理过程分享
  • Mysql5.5 InnoDB存储引擎配置和优化
  • MySQL数据库修复方法(MyISAM/InnoDB)
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • Fedora环境下装MySQL命令方法介绍
  • Mysql索引类型:B-Tree索引介绍
  • 如何解决mysql重装失败方法介绍
  • Mysql Select查询执行流程介绍及实例
  • 请介绍一个支持JSP+MySQL的虚拟主机。要求稳定、速度较快。谢谢!
  • Mysql索引类型:Hash索引介绍及举例说明
  • MySQL运行状况查询方式介绍
  • 网络技术 iis7站长之家
  • 5个常用的MySQL数据库管理工具详细介绍
  • mysql数据库介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php+mysql不用递归实现的无限级分类实例(非递归)
  • mysql 索引分类以及用途分析
  • mysql 无限级分类实现思路
  • PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程
  • 在Linux内安装了Mysql,无法进入Mysql.
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 怎样在linux终端输入mysql直接进入mysql?
  • MySQL索引基本知识
  • c++中关于#include <mysql/mysql.h>的问题?
  • Mysql设置查询条件(where)查询字段为NULL
  • mysql -u root mysql 怎么解释
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • mm.mysql那里可以下载?www.mysql.com根本下载不了。谢谢了
  • java将类序列化并存储到mysql(使用hibernate)
  • MySQL集群 MySQL Cluster


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3