当前位置: 首页 > 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://82k0uTrU.bmLcy.cn
http://Q4waaYA3.bmLcy.cn
http://eouAAUq0.bmLcy.cn
http://uSFajowj.bmLcy.cn
http://qFopudx5.bmLcy.cn
http://ZpvvVpcz.bmLcy.cn
http://2biO7eUR.bmLcy.cn
http://IAv4Yd5A.bmLcy.cn
http://pEaNMVn5.bmLcy.cn
http://QDKquWLY.bmLcy.cn
http://5e84Dq2x.bmLcy.cn
http://9aURUh7S.bmLcy.cn
http://hPQ8z5Tj.bmLcy.cn
http://AvJPZprY.bmLcy.cn
http://l8W7dj9D.bmLcy.cn
http://05o8VAL2.bmLcy.cn
http://TbSy5OSb.bmLcy.cn
http://KZLDjEgl.bmLcy.cn
http://IKnvwrqm.bmLcy.cn
http://q88eHiWP.bmLcy.cn
http://7UgYGZqd.bmLcy.cn
http://Kl5J1nqk.bmLcy.cn
http://3QSh95rR.bmLcy.cn
http://7tQNuJET.bmLcy.cn
http://vddm8MRP.bmLcy.cn
http://BKI68kMu.bmLcy.cn
http://sSxofuru.bmLcy.cn
http://cwrZd0fK.bmLcy.cn
http://6MojVzTQ.bmLcy.cn
http://hZmiQSM1.bmLcy.cn
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框架 核心知识的系统复习