mysql innodb update锁_Mysql InnoDB 数据更新 锁表

一、数据表结构

二、现象

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

存储过程循环30次更新操作

执行结果(速度非常慢)

时间: 29.876s

Procedure executed successfully受影响的行: 0

200个数据更新操作,三个数据库连接同时执行

执行结果(持续一段时间后速度越来越慢,出现等待锁)

# Time: 151208 22:41:24

# User@Host: zmduan[zmduan] @ [192.168.235.1] Id: 2# Query_time: 1.848644 Lock_time: 0.780778 Rows_sent: 0 Rows_examined: 393382SET timestamp=1449643284;update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f';

.................# User@Host: zmduan[zmduan] @ [192.168.235.1] Id: 2

# Query_time: 2.868598 Lock_time: 1.558542 Rows_sent: 0 Rows_examined: 393382

SET timestamp=1449643805;

update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f';

[root@localhost log]# tail -f slow_query.log

# User@Host: zmduan[zmduan] @ [192.168.235.1] Id: 19

# Query_time: 1.356797 Lock_time: 0.000169 Rows_sent: 1 Rows_examined: 393383

SET timestamp=1449643805;

SELECT *

FROM jx_attach ja,jx_feed jf

where ja.feed_id=jf.feed_id and ja.cycore_file_id='56677146da502cd8907eb5b7';

# User@Host: zmduan[zmduan] @ [192.168.235.1] Id: 2

# Query_time: 2.868598 Lock_time: 1.558542 Rows_sent: 0 Rows_examined: 393382

SET timestamp=1449643805;

update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f';

三、原因分析

MySQL的innodb存储引擎支持行级锁,innodb的行锁是通过给索引项加锁实现的,这就意味着只有通过索引条件检索数据时,innodb才使用行锁,否则使用表锁。根据当前的数据更新语句(update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f';),该条件字段cycore_file_id并没有添加索引,所以导致数据表被锁。

四、解决办法

为cycore_file_id添加索引

五、最终效果(30次更新操作)

时间: 0.094s

Procedure executed successfully受影响的行: 0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值