mysql innodb锁简析(1)
说好的每天一个技术博客,选了iteye,但是,那个界面真的好丑啊,丑的让我都没写下去的欲望了,所以,还是转移到博客园里面吧,虽然这里也是很丑的!
直接步入正题:
1. 数据库锁包括:读锁(可共享锁)和写锁(排它锁),他们之间的关系如下
读锁(S) | 写锁(X) | |
读锁(S) | + | — |
写锁(X) | — | — |
说明:+表示兼容,—表示不兼容
由上图可见:读锁与读锁之间是兼容的,但是其他就不兼容,也就是说如果加了写锁,那么就不能加其他的所。
示例(摘抄同事的):
时间 |
Tx1: |
Tx2: |
T1 |
Set autocommit=0; |
Set autocommit=0; |
T2 |
select * from union_plan lock in share mode; |
|
T3 |
update union_plan set notes='' ; blocking |
2:查看锁的命令:SELECT * FROM information_schema.innodb_locks
3: 锁按粒度分:表锁和行锁
行锁:锁住的只是一行数据,对于其他数据没有影响。
表锁:顾名思义,就是锁住的是一个表,自此,这个表便无法操作,常用DDL命令中。由于表锁涵盖了行锁,所以,表锁和行锁之间有冲突
为了方便见此表锁和行锁之间的冲突便引入了意向锁,
意向锁分为意向读锁(IS)和意向写锁(IX)。
意向锁是表级锁,但是去表示一个事务正在读或者写一条记录而不是整个表,所以意向锁之间不会产生冲突,真正的冲突在加行锁时检查
在加行锁时,要先加一个意向锁。示例如下:
A. trx1 BEGIN
B. trx1 给 T1 加X锁,修改表结构。
C. trx2 BEGIN
D. trx2 给
T1 加IX锁(事务被阻塞,等待加锁成功)
E. trx2 给
T1 的一行记录加S或X锁.
表锁的兼容性矩阵
IS IX S X
IS + +
+ –
IX + +
- -
S + - + -
X - - - -
+ 代表兼容,
-代表不兼容
意向锁之间不会冲突,
因为意向锁仅仅代表要对某行记录进行操作。在加行锁时,会判断是否冲突。
结语:先写到这里吧,剩下的我再好好看看,写技术博客真的便于加强理解呢
mysql innodb锁简析(1)的更多相关文章
- mysql innodb锁简析(2)
继续昨天的innodb锁的分析: 注:此博文参考一下地址,那里讲的也很详细.http://xm-king.iteye.com/blog/770721 mysql事务的隔离级别分为四种,隔离级别越高,数 ...
- mysql: 关于MySQL InnoDB锁行还是锁表?
baidu zone - 关于MYSQL Innodb 锁行还是锁表,深入讲解
- [转]关于MYSQL Innodb 锁行还是锁表
关于mysql的锁行还是锁表,这个问题,今天算是有了一点头绪,mysql 中 innodb是锁行的,但是项目中居然出现了死锁,锁表的情况.为什么呢?先看一下这篇文章. 目时由于业务逻辑的需要,必须对数 ...
- MySQL InnoDB锁机制
概述: 锁机制在程序中是最常用的机制之一,当一个程序需要多线程并行访问同一资源时,为了避免一致性问题,通常采用锁机制来处理.在数据库的操作中也有相同的问题,当两个线程同时对一条数据进行操作,为了保证数 ...
- mysql InnoDB锁等待的查看及分析
说明:前面已经了解了InnoDB关于在出现锁等待的时候,会根据参数innodb_lock_wait_timeout的配置,判断是否需要进行timeout的操作,本文档介绍在出现锁等待时候的查看及分析处 ...
- RDS MySQL InnoDB 锁等待和锁等待超时的处理
https://help.aliyun.com/knowledge_detail/41705.html 1. Innodb 引擎表行锁等待和等待超时发生的场景 2.Innodb 引擎行锁等待情况的处理 ...
- MySQL InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
MySQL InnoDB支持三种行锁定方式: l 行锁(Record Lock):锁直接加在索引记录上面,锁住的是key. l 间隙锁(Gap Lock):锁定索引记录间隙,确保索引记录的间隙 ...
- 你需要知道的MySQL&InnoDB锁都在这里
目录 一.前言 二.锁的类型 2.1 全局锁 2.2 表级锁 2.2.1 表锁 2.2.2 元数据锁(Meta Data Locks) 2.2.3 自增列锁(AUTO-INC Locks) 2.2.4 ...
- mysql——InnoDB 锁
https://www.cnblogs.com/leedaily/p/8378779.html 1.InnoDB锁的实现方式:给索引项加锁,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,I ...
随机推荐
- poj 3621(最优比率环)
题目链接:http://poj.org/problem?id=3621 思路:之前做过最小比率生成树,也是属于0/1整数划分问题,这次碰到这道最优比率环,很是熟悉,可惜精度没控制好,要不就是wa,要不 ...
- Linux下ps -ef和ps aux的区别及格式详解
Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux.这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格, System V风格和BSD 风格 ...
- [RM HA 2] Hadoop 2.0 ResourceManager HA原理
继上篇文章验证Cloudera RM HA功能后,现在开始分析Cloudera RM HA的原理. 设计目标 主要目的是为了解决两种问题 计划外的机器挂掉 计划内的如软件和硬件升级等. 架构 流程:两 ...
- Android核心分析之十八Android电话系统之RIL-Java
Android RIL-Java 123.jpg (2.09 KB, 下载次数: 1) 下载附件 保存到相册 2012-3-21 10:47 上传 RIL-Java在本质上就是一个RIL代理,起 ...
- iOS开发--控件
iOS知识点整理-提示器 http://www.jianshu.com/p/ac7e13d36e32 iOS知识点整理-RunLoop http://www.jianshu.com/p/e4fc6ac ...
- Keil 4.7a版本问题&Jlink Clone问题
听PP说Keil 4.7A新出,支持代码自动补全.激动之至,keil官网急填,下载安装. 问题即刻遇见①,电脑蓝屏,安装包损坏.当下载安装包未下载完时,续传安装包没用了.还是重下载吧,免得浪费时间. ...
- 311. Sparse Matrix Multiplication
题目: Given two sparse matrices A and B, return the result of AB. You may assume that A's column numbe ...
- VI操作--跳到最后一行和跳到最后一行的最后一个字符
vi操作 1.跳到文本的最后一行:按“G”,即“shift+g” 2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”. 3.跳到第一行的第一个字符:先按 ...
- iphone 6 设置自定义铃声(未越狱)
环境: ipone 6 iTunes 12.4.0.119 IOS 9.3.2 先把需要设置的铃声下载到电脑上,然后打开iTunes下的文件->将文件添加到资料库,如图: 2.在音乐列表里右击所 ...
- Combiner
如果job 设置了 combiner ,则job的每个map运行的数据会先进入combiner,然后再通过patitioner分发到reduce.通过combiner能减少reduce的计算.空间压力 ...