当前位置: 首页 > news >正文

【mysql】有索引和没有索引字段更新时锁的不同

结论

    对于有索引的的字段作为更新条件,如果更加语句用上了索引,那么只会在对于的更新字段的索引和对于记录的主键索引上加上x锁

    如果更新字段没有索引,由于需要全部扫描,那么就会给所有主键索引加上x,导致其他事务的更新操作被阻塞

准备

有表 t_person_info,create_time没有加索引,有记录: 4429

执行无索引字段更新

执行下面的事务,不提交


begin;
update  t_person_info set type='2' where create_time>SYSDATE()-2 and create_time<=SYSDATE()-1;

rollback;

查看锁信息(mysql8版本)

 

执行有索引记录更新

   给create_time创建索引。

ALTER TABLE `datacatlog`.`t_person_info` 
ADD INDEX `idx_create_time`(`create_time`) USING BTREE;

sql: 

select  * from t_person_info where create_time<STR_TO_DATE('05/10/2024 14:30:00', '%d/%m/%Y %H:%i:%s')
   and create_time>STR_TO_DATE('05/10/2022 14:30:00', '%d/%m/%Y %H:%i:%s')

 执行计划:


EXPLAIN select  * from t_person_info where create_time<STR_TO_DATE('05/10/2024 14:30:00', '%d/%m/%Y %H:%i:%s')
   and create_time>STR_TO_DATE('05/10/2022 14:30:00', '%d/%m/%Y %H:%i:%s')

  

然后再更新:


begin;
update  t_person_info set type='2' where create_time>SYSDATE()-2 and create_time<=SYSDATE()-1;

rollback;

 查看锁信息(mysql8版本)

可以看到上面查询的符合条件的记录都被加上x锁了。

然后执行其他更新操作:

 

执行无主键和无唯一键的表更新 

    t_test表有test1 test2 test3三个字段,但是没有任何索引,也没有主键

  

 

 开始一个执行更新事务

BEGIN;

update t_test set test1='r2rr' where test2='233';


ROLLBACK

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/52543.html

相关文章:

  • 使用Spring AI调用AI模型
  • YOLOv8改进SPFF-LSKA大核可分离核注意力机制
  • docker oracle11
  • windows2012部署redis5并安装为服务
  • svn 通过127.0.01能访问 但通过公网IP不能访问,这是什么原因?
  • Nacos简介、安装与使用(保姆级教程!!!)
  • ProfibusDP主站转ModbusTCP网关如何进行数据互换
  • 学习日记-250305
  • 大数据环境(单机版) Flume传输数据到Kafka
  • C++ JSON库的使用示例
  • MambaMorph:基于 Mamba 的医学 MR-CT 可变形配准框架
  • scBaseCamp:一个AI代理的可持续扩充的单细胞数据存储库
  • Huggingface transformers库使用教程(翻译)--------(2)使用piplines进行推理
  • IDC权威认证!永洪科技入选 IDC「GBI图谱」,点亮生成式 BI 价值灯塔
  • 【Linux】使用问题汇总
  • MySQL-多表查询
  • 模拟数据文件少写“+”加在本地如何恢复?
  • Java 实现 Oracle 的 MONTHS_BETWEEN 函数
  • 在PyCharm开发环境中,如何建立hello.py文件?
  • 小菜鸟系统学习Python-迭代实现斐波那契和汉诺塔问题
  • C语言——链表
  • 国产替代新篇章:领麦微红外测温传感器赋能3D打印精准制造
  • 开启科创服务新篇章:八月瓜科技CRM数字化管理系统成功上线
  • 永磁直驱式风力发电虚拟同步机仿真模型Matlab/Simulink模型
  • 从数据到决策,永洪科技助力良信电器“智”领未来
  • 【CV001】归一化互相关模板匹配matlab实现
  • 【漫话机器学习系列】120.参数化建模(Parametric Modeling)
  • PHP动态网站建设
  • Linux内存分页:原理、优势与实践
  • pytest框架 核心知识的系统复习