免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8959 | 回复: 12
打印 上一主题 下一主题

怎么查看show innodb status的历史记录? [复制链接]

论坛徽章:
1
亥猪
日期:2013-10-30 23:29:55
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-10 17:32 |只看该作者 |倒序浏览
本帖最后由 suanmeilizhi 于 2013-10-10 17:43 编辑

存储过程压力测试过程中出现mysql死锁,压力测试完成之后,用
  1. show innodb status
复制代码
确是打印其他信息,要怎么找回之前的死锁信息呢?

EDIT:

现在的情况是存储过程里面有一条update语句,一条insert语句,之前看的死锁情况,是update语句申请锁失败了,具体的sql是:
  1. update userinfo set balance = balance - r_to_pay, givebalance = givebalance - g_to_pay where balance - r_to_pay>=0 and givebalance - g_to_pay>=0 and ssoid = p_ssoid;
复制代码
ssoid是unique索引,主键是一个无意义的id,没想明白怎么会死锁?

论坛徽章:
0
2 [报告]
发表于 2013-10-10 18:14 |只看该作者
写个脚本,定期将status信息写到文件。典线救国。

论坛徽章:
1
亥猪
日期:2013-10-30 23:29:55
3 [报告]
发表于 2013-10-10 18:15 |只看该作者
回复 2# a.a


    救不了了,已经跑过了

论坛徽章:
1
亥猪
日期:2013-10-30 23:29:55
4 [报告]
发表于 2013-10-10 18:16 |只看该作者
回复 2# a.a


    现在的问题是,找出死锁的原因

论坛徽章:
0
5 [报告]
发表于 2013-10-10 18:18 |只看该作者
本帖最后由 a.a 于 2013-10-10 18:19 编辑

出现死可以从多个角度进行分析,比如说你可以打开数据库 general 及slow-qeruy-log
这样就可以看到在死锁的时候数据库发在干什么,是什么样的操作制了死锁。

论坛徽章:
1
亥猪
日期:2013-10-30 23:29:55
6 [报告]
发表于 2013-10-10 18:27 |只看该作者
回复 5# a.a


    是我上面的update语句导致死锁,但是我不明白为啥这句update会死锁,不满足死锁的条件啊

论坛徽章:
0
7 [报告]
发表于 2013-10-10 19:20 |只看该作者
本帖最后由 a.a 于 2013-10-10 19:30 编辑

表的记录多少?index如何?update 多少条记录?什么是引擎?

论坛徽章:
1
亥猪
日期:2013-10-30 23:29:55
8 [报告]
发表于 2013-10-10 22:29 |只看该作者
本帖最后由 suanmeilizhi 于 2013-10-10 23:36 编辑

回复 7# a.a


    记录并不多,测试环境做压力测试的时候出现的,并发估计比平时高点,存储引擎是InnoDB,压力测试的时候,ssoid一直没变,并且ssoid又是unique索引。


有没有可能是因为并发量太大,超过LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK?
记得当时的错误日志还有:
  1. DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE
  2. WILL ROLL BACK FOLLOWING TRANSACTION
复制代码

论坛徽章:
8
CU大牛徽章
日期:2013-09-18 15:20:48CU大牛徽章
日期:2013-09-18 15:20:58CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:17天秤座
日期:2013-10-30 14:01:03摩羯座
日期:2013-11-29 18:02:31luobin
日期:2016-06-17 17:46:36
9 [报告]
发表于 2013-10-11 11:18 |只看该作者
@a.a@suanmeilizhi

show engine ionnodb status\G 是会记录最后一个死锁记录。
如果你在这里看不出信息,那么就是说你还存在其他死锁?
如果是这样,那么就请按照aa兄的说法,循环记录engine innodb status的状态。
如果这种死锁的几率很低(99.99%一下),基本可以忽略。

论坛徽章:
1
亥猪
日期:2013-10-30 23:29:55
10 [报告]
发表于 2013-10-11 11:38 |只看该作者
回复 9# chinafenghao


    怎么循环记录死锁日志???

    几率很大啊,压力测试经常出现
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP