mysql 锁 实验
CREATE TABLE `kk` (
`a` int() NOT NULL,
`b` int() NOT NULL,
`c` int() NOT NULL,
PRIMARY KEY (`a`),
UNIQUE KEY `bb` (`b`),
KEY `cc` (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
mysql> select * from kk;
+---+----+----+
| a | b | c |
+---+----+----+
| | | |
| | | |
| | | |
| | | |
| | | |
+---+----+----+
rows in set (0.16 sec)
铺助索引 主健
a=5 recordlock[5]
a<5 next_keylock[1,3,5]
a<=5 next_keylock[1,3,5,7]
a>5 next_keylock[7,9,sup]
a>=5 next_keylock[5,7,9,sup]
b=15 recordlock[5] recordlock[5]
b<15 next_keylock[10,13,15] recordlock[1,5]
b<=15 next_keylock[10,13,15,17] recordlock[1,3,5]
b>15 next_keylock[17,19,sup] recordlock[17,19]
c=25 next_keylock[25] ,caplock[27] recordlock[25]
c<25 next_keylock[20,23,25] recordlock[20,23]
c<=25 next_keylock[20,23,25,27] recordlock[20,23,25]
c>25 next_keylock[27,29,sup] recordlock[27,29]
rr级别: 解决不可重复读,幻读
set tx_isolation="REPEATABLE-READ"
select * from kk where a ... for update
select * from kk where b ... for update
select * from kk where c ... for update
RR:对打开的游标都需要加锁,直到不满足条件那条记录
RC:只对满足条件的记录加锁
RR:
NEXT-KEY-LOCK-------唯一等值查询---- 转换为RECORD LOCK
select * from kk force index(primary) where a.. for update; 防数据量小,走全表,不走索引,会全表锁
单个事务插入一条记录,不对该条记录的下一条记录加插入意向锁
如果要插入记录的位置的下一条记录有CAP LOCK | NEX-KEY LOCK,就会在该记录加上插入意向锁,等待插入,如果下一条记录是RECORD LOCK,就直接插入
mysql 锁 实验的更多相关文章
- Mysql学习笔记-临键锁实验
前言 昨天同事跟我聊到一个问题:InnoDB里面间隙锁锁住的数据可以update么?我们经常都说间隙锁是InnoDB在RR隔离级别下防止幻读的一种处理手段.它可以防止数据在间隙范围中insert数据, ...
- [MySQL] 锁/死锁问题一例
MySQL锁/死锁问题 在MySQL中, 不同事务隔离级别下, 锁的情况表现是不同的, 另外表的设计上有无索引也是一个因素. 做一个小的实验测试InnoDB锁表现 -:) 说明 事务隔离级别 READ ...
- MySQL 锁(完整版)
目录 锁总览 锁的作用 加锁流程 锁对数据库的影响 锁等待 死锁 锁类型 锁范围 锁方式 全局锁 全局读锁 全局QC锁 QC锁存在的问题: 备份锁 backup lock MDL锁 MDL锁类型 MD ...
- mysql锁
锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数 ...
- Mysql锁初步
存储引擎 要了解mysql的锁,就要先从存储引擎说起. 常用存储引擎列表如下图所示: 最常使用的两种存储引擎: Myisam是Mysql的默认存储引擎.当create创建新表时,未指定新表的存储引擎时 ...
- mysql锁表机制及相关优化
(该文章为方便自己查阅,也希望对大家有所帮助,转载于互联网) 1. 锁机制 当前MySQL支持 ISAM, MyISAM, MEMORY (HEAP) 类型表的表级锁,BDB 表支持页级锁,InnoD ...
- MySQL锁系列3 MDL锁
http://www.cnblogs.com/xpchild/p/3790139.html MySQL为了保护数据字典元数据,使用了metadata lock,即MDL锁,保证在并发的情况下,结构 ...
- 01 MySQL锁概述
锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O 等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有 ...
- Mysql锁机制介绍
Mysql锁机制介绍 一.概况MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...
随机推荐
- Model Thinking1
Why Model Reason # 1: Intelligent Citizen of the World Reason # 2: Clearer Thinker Reason # 3: Under ...
- gcc/g++命令认识
gcc & g++是gnu中最主要和最流行的c & c++编译器 . g++用来针对c++的处理命令,以.cpp为后缀,对于c语言后缀名一般为.c.这时候命令换做gcc即可. 下面以T ...
- iOS 必备技术点
IOS面试问题总结 分类: IOS开发2013-11-20 17:26 5873人阅读 评论(1) 收藏 举报 目录(?)[+] 通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题: ...
- Coursera《machine learning》--(8)神经网络表述
本笔记为Coursera在线课程<Machine Learning>中的神经网络章节的笔记. 八.神经网络:表述(Neural Networks: Representation) 本节主要 ...
- 通过CTAPI和Citect SCADA软件进行数据通讯
官方文档 Citect SCADA 7.20 Technical Reference 参考文献 基于Citect远程控制的变流量堆料控制系统 [王玉增,顾英妮,王维 济南大学,机械工程学院 ,Cite ...
- IndexedDB
http://www.tfan.org/indexeddb/ http://fnvfox.appspot.com/thankyou.html http://www.tfan.org/wechat-on ...
- 如何用 React Native 创建一个iOS APP?
诚然,React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用.在 JavaScript 中用 Reac ...
- python中并行遍历:zip和map-转
http://blog.sina.com.cn/s/blog_70e50f090101lat2.html 1.并行遍历:zip和map 内置的zip函数可以让我们使用for循环来并行使用多个序列.在基 ...
- [转载]# Ajax异步请求阻塞情况的解决办法
最近使用ExtJs4的mvc模式在开发了在线漫画的后台,因为异步请求比较多,有的回应时间长,有点短.我发现在多次并发的情况下,会造成阻塞的情况.也就是说如果回应时间长的请求还在进行中,短的请求却被挂起 ...
- Bluetooth LE(低功耗蓝牙) - 第二部分
回顾 在前面的文章中我们介绍了Bluetooth LE的背景也说明了我们在本系列文章中将要开发什么,但是还没有实际的代码.我们将在这篇文章中纠正这一点,我们将通过定义 Service/Activity ...