Mysql InnoDB行锁不使用索引锁表的时候会锁整张表
原文:http://www.thinkphp.cn/topic/41577.html
如果使用针对InnoDB的表使用行锁,被锁定字段不是主键,也没有针对它建立索引的话。行锁锁定的也是整张表。锁整张表会造成程序的执行效率会很低。
具体测试步骤如下:
1. 创建测试表
注意表类型设置成为InnoDB
2. 插入测试数据
3. 不使用索引的情况,线程1进行查询结果如下
这时候来启动另一个查询窗口,使用线程2进行查询
发现虽然查询条件不一样,但是记录同样被锁死,查询不到结果,线程1进行事务提交后,线程2显示查询结果。所以查询1进行的不是行锁而是表锁。
4. 对nickname字段建立索引
重复步骤3,发现查询结果显示出来了,证明有索引的情况下,行锁生效了。
Mysql InnoDB行锁不使用索引锁表的时候会锁整张表的更多相关文章
- Mysql InnoDB行锁实现方式(转)
		
Mysql InnoDB行锁实现方式 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点 ...
 - Mysql InnoDB行锁实现方式
		
Mysql InnoDB行锁实现方式 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点 ...
 - mysql innodb存储引擎的聚集索引
		
InnoDB聚集索引 MySQL有没有支持聚集索引,取决于采用哪种存储引擎. MySQL InnoDB一定会建立聚集索引,所谓聚集,指实际数据行和相关的键值保存在一块,这也决定了一个表只能有一个聚集索 ...
 - MySQL InnoDB 行记录格式(ROW_FORMAT)
		
MySQL InnoDB 行记录格式(ROW_FORMAT) 一.行记录格式的分类和介绍 在早期的InnoDB版本中,由于文件格式只有一种,因此不需要为此文件格式命名.随着InnoDB引擎的发展,开发 ...
 - (转) 【oracle调优】优化全表扫---cache整张表或索引
		
情景分析: 1)某查询必须要走全表扫描 2)该查询执行的频率相当高 3)对执行时间的要求也相当苛刻的话 4)数据库的IO比较吃紧 5)数据库的内存比较宽松 6)该表的大小没有大到离谱 以上情况下,可以 ...
 - mysql innodb 行级锁升级
		
创建数据表test,表定义如下所示: CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NO ...
 - MySQL InnoDB存储引擎体系架构 —— 索引高级
		
转载地址:https://mp.weixin.qq.com/s/HNnzAgUtBoDhhJpsA0fjKQ 世界上只两件东西能震撼人们的心灵:一件是我们心中崇高的道德标准:另一件是我们头顶上灿烂的星 ...
 - 数据页结构 .InnoDb行格式、以及索引底层原理分析
		
局部性原理 局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中. 首先要明白局部性原理能解决的是什么问题,也就是主存容量远远比缓存大, CP ...
 - mysql ,为什么一张表的varchar关联另一张表varchar执行失败的一个原因
		
CONSTRAINT `orderdts_ibfk_2` FOREIGN KEY (`address`) REFERENCES `test列` (`address`) 很可能的原因是另一张表的test ...
 
随机推荐
- java Random 抢红包算法
			
红包有一个总金额和总数量,领的时候随机分配金额. 维护一个剩余总金额和总数量,分配时,如果数量等于1,直接返回总金额,如果大于1,则计算平均值,并设定随机最大值为平均值的两倍,然后取一个随机值,如果随 ...
 - Vmvare v12下搭建Ubuntu操作系统-18.04-desktop-amd64.iso镜像环境
			
1.选择[典型],点击下一步. 2.找到ubuntu镜像文件所在位置,如图所示: 3.配置用户信息 4.设置安装位置 5.磁盘尽量大一些,笔者设置40g 6.自定义修改硬件信息 7.内存建 ...
 - phpspreadsheet 中文文档(八)读写文件+读取文件
			
2019年10月11日14:09:40 配置设定 将PhpSpreadsheet文件包含在脚本中之后,但是在实例化Spreadsheet对象或加载工作簿文件之前,可以设置许多配置选项,这些配置选项将影 ...
 - ifcopenshell在VS2015下的编译
			
源起 今天使用 IfcOpenShell的IfcConvert ,因为是开源的所以就想自己编译下,编译过程中遇到不少问题,因此记录下来 什么是IfcOpenShell? IfcOpenShell是一个 ...
 - 【layui】获取layui弹窗的index并关闭
			
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引 parent.layer.close(index); // 关闭当前laye ...
 - Java之static作用的深度总结
			
1.深度总结 引用一位网友的话,说的非常好,如果别人问你static的作用:如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的:如果是说 可以构成 静态代码块,那别人认为你还可以: 如果你说 ...
 - python:求整数的二进制表示
			
求解方法: 1.整数求余 2.重复进行,整数除2再求余,直到除数为0 3.拼接余数 4.反转字符串 def int2two(intNo): twoStr='' if intNo == 0: twoSt ...
 - Feign调用时读取超时(Read timed out executing GET)解决
			
解决方式(很多人比较关注,所以放在最前面): 因为Feign调用默认的超时时间为一分钟,一分钟接口不能返回就会抛出异常,所以在服务端的yml文件中增加如下配置即可解决: # feign调用超时时间配置 ...
 - c++11多线程记录4:死锁
			
简单示例 举个例子,桌上有一支笔和一张纸,小A和小B都要拿到纸笔写字 小A拿了笔,小B拿了纸,这时就形成了死锁(两人都不愿意让出纸笔). 其实只要稍加控制就可以避免这种情况:规定必须先拿到纸再能去尝试 ...
 - Python输错4次用户名密码需要输入验证码
			
time = 0 login_success = False USER_NAME = "alex" PWD = "alex123" CHECK_CODE = & ...