Mysql 更新语句锁表详解


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

 

一、现象

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

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

 

二、原因分析

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

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

 

三、解决办法

  给 oId 添加索引。

 




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM