品易云推流 关闭
文章详情页
文章 > MySQL > mysql行锁的优化

mysql行锁的优化

头像

小妮浅浅

2021-05-24 14:50:38493浏览 · 0收藏 · 0评论

1、优化方法

尽可能让所有数据检索都通过索引来完成,避免无索引行或索引失效导致行锁升级为表锁。

尽可能避免间隙锁带来的性能下降,减少或使用合理的检索范围。

尽可能减少事务的粒度,比如控制事务大小,而从减少锁定资源量和时间长度,从而减少锁的竞争等,提供性能。

尽可能低级别事务隔离,隔离级别越高,并发的处理能力越低。

2、实例

CREATE TABLE `user` (
  `name` VARCHAR(32) DEFAULT NULL,
  `count` INT(11) DEFAULT NULL,
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
 
-- 这里,我们建一个user表,主键为id
 
 
 
-- A通过主键执行插入操作,但事务未提交
update user set count=10 where id=1;
-- B在此时也执行更新操作
update user set count=10 where id=2;
-- 由于是通过主键选中的,为行级锁,A和B操作的不是同一行,B执行的操作是可以执行的
 
 
 
-- A通过name执行插入操作,但事务未提交
update user set count=10 where name='xxx';
-- B在此时也执行更新操作
update user set count=10 where id=2;

以上就是mysql行锁的优化,希望对大家有所帮助。更多mysql学习指路:MySQL

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图