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 ...
随机推荐
- springmvc的mvc:view-controller标签
1.重定向 <mvc:view-controller path="/" view-name="redirect:/admin/index"/> 即如 ...
- centOS学习part3:远程工具VNC的安装与配置
0 上一篇(http://www.cnblogs.com/souvenir/p/3875484.html)我们介绍了通过yum安装JDK的实例,初步见识了yum命令的强大.本章我们将继续使用yum命令 ...
- 欧拉工程第55题:Lychrel numbers
package projecteuler51to60; import java.math.BigInteger; import java.util.Iterator; import java.util ...
- 在AE中通过SDE添加图层(转)
public void AddSDELayer(bool ChkSdeLinkModle) { //< span style="color: #00 ...
- iOS CoreMotion框架(传感器)
我们知道iOS的应用真的太多了,很多应用让我们惊叹不已!!!很多意想不到的应用! 比如: 1.电子罗盘指南针之类的应用-让我们知道方向. 2.运动类型软件-让我们知道我们跑步多少公里. 3.社交软件中 ...
- 【总结】你所不知道的Java序列化
我们都知道,Java序列化可以让我们记录下运行时的对象状态(对象实例域的值),也就是我们经常说的对象持久化 .这个过程其实是非常复杂的,这里我们就好好理解一下Java的对象序列化. 1. 首先我们要搞 ...
- SSIS ->> Null & Null Functions
SSIS不支持值为NULL的变量.每种类型的变量都有自己的默认值. 做了一个测试,用一个Execute SQL Task输出一个NULL值给A变量,然后把A变量传到到另外一个Execute SQL T ...
- IOS系统中使用zepto的live事件绑定不了的一个办法
IOS系统中使用zepto的live事件绑定不了的一个办法: 对事件对象添加样式:cursor:pointer
- C# const与static的理解
C# const与static的理解 static readonly与 const变量,作用是一样的,无论访问修饰符是不是public,还是其它(private. protected.interna ...
- 手持机连不上信道设置为13的AP
这个是正常的, 因为每个国家的CHANNEL 都不一样, 中国和美国都只支持 CHANNEL 1- 11 欧洲会到 12, 13 channal , 日本会到CHANNEL 14 . "O ...