问题
由于有一批数据要进行处理,数据量过大,我们在后台开启了多个线程进行跑,但是每次跑的时候,数据都没有达到一致性,而且后台报错。
解决问题
原因
解决
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!
相关文章:
2022-12-23
2022-12-23
2022-12-23
2022-12-23
2022-12-23
2022-12-23
2022-12-23
2022-12-23
猜你喜欢
2021-07-12
2021-12-11
2022-12-23
2022-12-23
2021-06-27
2022-12-23
2022-12-23
相关资源
下载
2023-02-03
下载
2022-12-06
下载
2023-03-10