Mysql 更新语句锁表详解

本文介绍的时关于更新语句会锁表的原因及解决方案。

 

一、现象

  当多个连接同时对一个表的数据进行更新操作,那么速度将会越来越慢,持续一段时间后将出现数据表被锁,从而影响到其它的查询及更新。

    update Order set state = 2 where oId=1 and state = 1

 

二、原因分析

  MySQL的innodb存储引擎支持行级锁,innodb的行锁是通过给索引项加锁实现的,这就意味着只有通过索引条件检索数据时,innodb才使用行锁,否则使用表锁。

  而我并没有添加索引,所以导致数据表被锁。

 

三、解决办法

  给 oId 添加索引。

 



posted @ 2021-01-14 11:02  追太阳的小码妹  阅读(922)  评论(0编辑  收藏  举报