mysql请求超时问题
分类:
文章
•
2024-07-30 09:41:04
问题
- 由于有一批数据要进行处理,数据量过大,我们在后台开启了多个线程进行跑,但是每次跑的时候,数据都没有达到一致性,而且后台报错。
解决问题
- 原因
- 解决
-
show variables like '%timeout%'
;

- 查看 innndb_lock_wait_timeout 变量修改的大一点?
set innndb_lock_wait_timeout =100;
解决问题?
- 我们在进行跑的时候,确实报超时请求的数量少了,保证了大量的数据的正确性,等了半个小时(数据量多,而且要做逻辑处理)。到数据里面去看的时候,我去,发现数据还是不一致,不对啊,如果出现报错的话,应该是要进行事务回滚的啊,不应该出现这个问题的啊!
- 最后请教了一个贾大神(是真大神只是姓有点怪..),是这个问题:
innodb_rollback_on_timeout=OFF
,OFF的意思是在一个事务里面,如果一条sql等待超时的话,会回滚这一条sql,但是整个事务不会回滚,继续执行。ON的意思是如果有超时等待话,整个事务会进行回滚! mysql 默认为OFF,坑了。
- 解决:将innodb_rollback_on_timeout这个置为on,在mysql.conf文件中进行改变。重启mysql,OK!