百度不收录你的网站产品,免费网络营销,咖搭姆少儿编程加盟,为国外客户做网站建设结论 对于有索引的的字段作为更新条件#xff0c;如果更加语句用上了索引#xff0c;那么只会在对于的更新字段的索引和对于记录的主键索引上加上x锁 如果更新字段没有索引#xff0c;由于需要全部扫描#xff0c;那么就会给所有主键索引加上x#xff0c;导致其他事务的更…结论 对于有索引的的字段作为更新条件如果更加语句用上了索引那么只会在对于的更新字段的索引和对于记录的主键索引上加上x锁 如果更新字段没有索引由于需要全部扫描那么就会给所有主键索引加上x导致其他事务的更新操作被阻塞
准备
有表 t_person_infocreate_time没有加索引有记录 4429
执行无索引字段更新
执行下面的事务不提交 begin;
update t_person_info set type2 where create_timeSYSDATE()-2 and create_timeSYSDATE()-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_timeSTR_TO_DATE(05/10/2024 14:30:00, %d/%m/%Y %H:%i:%s)and create_timeSTR_TO_DATE(05/10/2022 14:30:00, %d/%m/%Y %H:%i:%s) 执行计划 EXPLAIN select * from t_person_info where create_timeSTR_TO_DATE(05/10/2024 14:30:00, %d/%m/%Y %H:%i:%s)and create_timeSTR_TO_DATE(05/10/2022 14:30:00, %d/%m/%Y %H:%i:%s) 然后再更新 begin;
update t_person_info set type2 where create_timeSYSDATE()-2 and create_timeSYSDATE()-1;rollback; 查看锁信息(mysql8版本)
可以看到上面查询的符合条件的记录都被加上x锁了。
然后执行其他更新操作 执行无主键和无唯一键的表更新 t_test表有test1 test2 test3三个字段但是没有任何索引也没有主键 开始一个执行更新事务
BEGIN;update t_test set test1r2rr where test2233;ROLLBACK