关于MySQL行锁等待超时

【什么是锁】

在介绍如何解决行锁等待问题前,先简单介绍下这类问题产生的原因。产生原因简述:当多个事务同时去操作(增删改)某一行数据的时候,MySQL 为了维护 ACID 特性,就会用锁的形式来防止多个事务同时操作某一行数据,避免数据不一致。只有分配到行锁的事务才有权力操作该数据行,直到该事务结束,才释放行锁,而其他没有分配到行锁的事务就会产生行锁等待。如果等待时间超过了配置值(也就是 innodb_lock_wait_timeout 参数的值,个人习惯配置成 5s,MySQL 官方默认为 50s),则会抛出行锁等待超时错误。

提交translation之后如果没有设置自动提交事务一定一定要commit!!!以及及时close!!!
在测试的时候请求被拦截,还以为是响应头文件有问题,但是又看不出哪里有问题,最后用junit单元测试之后还是如此,一直显示mysql的提交超时,事务回滚。最后怒关服务器居然好了,最后发现是服务器一直霸占着SqlSession,没有close,导致事件在队列中等待最后超时。。。。等重构到spring AOP的时候记得加个@After注解

文章目录
  1. 1. 【什么是锁】
|