博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对mysql的各种sql语句如何对表加锁的实验
阅读量:6201 次
发布时间:2019-06-21

本文共 1627 字,大约阅读时间需要 5 分钟。

TableA

+----+------+

| c1 | c2   |
+----+------+
|  3 | NULL |
|  4 | NULL |
|  5 | NULL |
| 11 |   12 |
| 12 |   13 |
+----+------+
一 在c1上无索引,innodb_locks_unsafe_for_binlog开关被关闭。
1  1.0 select * from ta where c1=11在read_repatable  isolation level的时候,另一个session是可以随便插入的任何值。
   1.1 如果是select * from ta where c1=11 lock in share mode它是对所有的行加S lock,另外一个session任何值都是不能插入的。
2  update ta set c1=17 where c1=11在read_repatable  isolation level的时候,对表中所有行加X行锁,另外一个session不能插入任何值。
二 当c1上有索引的时候,非cluster的,非unique的,innodb_locks_unsafe_for_binlog开关被关闭。
1  1.0 select * from ta where c1=11在read_repatable  isolation level的时候,另一个session是可以随便插入的任何值。
   1.1 如果是select * from ta where c1=11 lock in share mode 会对c1=11这一行加S锁,在C1<12上所有的行加上S gap锁,
   即另外一个session插入c1>=12是可以的,但是插入c1<12的值不成功。
2  update ta set c1=17 where c1=11在在read_repatable  isolation level的时候,对表中c1=11这一行加上X锁,对c1<12这个区间插入X gap锁,
    另外一个session插入c1>=12是成功的,但是插入c1<12的都是不可以的。
三 innodb_locks_unsafe_for_binlog开关被打开,index为clustered和unique的。。等等 分别去实验,好多,不写了。。

 

一个问题:>select * from tb;+------+------+| c1   | c2   |+------+------+|    3 | NULL ||    4 | NULL ||    5 | NULL ||    6 |   11 ||   11 |   12 ||   14 |   13 ||   15 |   16 ||    7 |   10 ||    8 |   10 ||    9 |   10 |+------+------+>show create table tb;| tb    | CREATE TABLE `tb` (  `c1` int(11) DEFAULT NULL,  `c2` int(12) DEFAULT NULL,  KEY `c1` (`c1`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 |>set autocommit=0;>select * from tb where c1=11;经过验证的结果是:lock monitor显示的加锁:                                 11加S锁,11的下一条加了S gap锁,实际的操作是:                             【11前的一条,11,11后的一条)不能被插入

 

转载于:https://www.cnblogs.com/jack204/archive/2012/08/20/2647962.html

你可能感兴趣的文章
Worktile获斯道资本领投5000万人民币B轮融资,上半年营收同比增长300%以上
查看>>
HyperLedger Fabric 1.2 区块链技术形成(1.2)
查看>>
RStudio v1.2.1335 发布,R 语言的集成开发环境
查看>>
未来高端医疗器械将占据主要市场份额
查看>>
最完美的毁尸灭迹:皮箱连环弃尸案始末
查看>>
Web性能优化 – 关键渲染路径以及优化策略
查看>>
WPF布局
查看>>
Android Flutter实践内存初探
查看>>
shell脚本输出带颜色字体
查看>>
js断点调试心得
查看>>
Kubernetes priviledge and capabilities
查看>>
SpringBoot学习之集成dubbo
查看>>
上海临港澄清与特斯拉并未接触,后者落地上海就是一个“乌龙”
查看>>
我面试过的那些烂技术大哥
查看>>
第145天:jQuery.touchSlider触屏满屏左右滚动幻灯片
查看>>
如何用 CSS 修出好看的照片
查看>>
乐视,你敢做VR直播吗?
查看>>
Parrot 4.6 发布,基于 Debian 的 Linux 发行版
查看>>
Linux下的echo输出换行符
查看>>
SoJpt Boot 2.3-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发
查看>>