当前位置: 首页 > 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.lryc.cn/news/546146.html

相关文章:

  • 机器学习的三个基本要素
  • 神经机器翻译:联合学习对齐和翻译
  • [Web 安全] PHP 反序列化漏洞 —— PHP 魔术方法
  • 聆听PostgreSQL数据库的使用
  • 2025嵌入式软件开发工程师--音频方向
  • C#释放内存空间的方法
  • 《鸢尾花数学大系:从加减乘除到机器学习》开源资源
  • 如何将一台服务器的pip环境迁移到另一个机器?
  • Java 入门 (超级详细)
  • 计算机基础面试(数据结构)
  • DBGPT安装部署使用
  • 【蓝桥杯单片机】第十二届省赛
  • 开源嵌入式实时操作系统NuttX介绍
  • 阿里云服务器部署项目笔记 实操 centos7.9
  • Java-实现PDF合同模板填写内容并导出PDF文件
  • Docker安装Grafana数据可视化平台
  • MyBatis-Plus 自动填充功能
  • 解决redis lettuce连接池经常出现连接拒绝(Connection refused)问题
  • 武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司举行校企联培座谈会
  • 4.网络技术与应用
  • Kafka 主题 retention.ms 配置修改及深度问题排查指南
  • React实现无缝滚动轮播图
  • deepseek+mermaid【自动生成流程图】
  • 分布式锁的简单实现
  • C语言(19)----------->函数(2)
  • 动态扩缩容引发的JVM堆内存震荡:从原理到实践的GC调优指南
  • 为何在用户注销时使用 location.href 而非 Vue Router 的 router.push
  • 开源工具推荐:Uptime Kuma监控
  • 《基于Selenium的论坛系统自动化测试实战报告》
  • 深入解析SQL Server高级SQL技巧