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 ...
随机推荐
- gocode 安装
1.安装git,将git/bin添加至PATH 2.执行go get -u github.com/nsf/gocode 3.在%GOPATH%/bin/下会生成gocode.exe
- Python 关于正负无穷float(‘inf’)的一些用法
Python中可以用如下方式表示正负无穷: float("inf"), float("-inf") 利用 inf 做简单加.乘算术运算仍会得到 inf > ...
- Ubuntu启动错误Checking Battery State的处理
一.问题描述 二.处理方法 方法一: 按下 ctrl + alt + F1,进入终端,使用管理员权限执行下列代码 sudo rm /etc/X11/xorg.conf sudo reboot 方法二: ...
- 【MyBatis学习笔记】
[MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...
- 【Java】数据库连接池技术
JDBC的问题 在程序中,我们经常要建立与数据库的连接,之后再关闭这个连接.我们知道,数据库连接对象的创建是比较消耗系统性能的,这些频繁的操作势必会消耗大量的系统资源.因此我们需要采用更高效的数据库访 ...
- 无插件Vim编程技巧
无插件Vim编程技巧 http://bbs.byr.cn/#!article/buptAUTA/59钻风 2014-03-24 09:43:46 发表于:vim 相信大家看过<简明Vim教程& ...
- 【uva11374】Airport Express 最短路
题意: 在Iokh市中,机场快线是市民从市内去机场的首选交通工具.机场快线分为经济线和商业线两种,线路,速度和价钱都不同.你有一张商业线车票,可以坐一站商业线,而其他时候只能乘坐经济线.假设换乘时间忽 ...
- struts2 集成webservice 的方法
由于项目需求的需要,要在原来用Struts2的框架之上集成webservice,因为之前单单做webservice的时候没有多大问题,使用 Spring 和 Xfire就可以轻松地发布服务,但是,当和 ...
- 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板
最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...
- 《深度探索c++对象模型》chapter3 Data语意学
一个空的class:如 class X{} ; sizeof(X)==1; sizeof为什么为1,他有一个隐晦的1 byte,那是被编译器安插进去的一个char,这使得class2的两个object ...