2

我正在处理 Mysql 中真正的大数据。其中一张表包含大约 400 万行,在这些行上不断更新查询。

此更新查询一直顺利执行,直到一段时间后,但随着行数的增加,它给我带来了锁等待超时错误的严重问题。

我搜索了它的解决方案,我得到的唯一解决方案是增加,innodb_lock_wait_timeout但我在某处读到这实际上是解决该错误的错误选择。

任何人都可以帮助我如何在不增加 的情况下解决这个问题innodb_lock_wait_timeout,我正在寻找其他解决方案,因为增加变量 time_out 会在整个数据库中增加它,但我只想增加一个有这么多记录的表的事务时间。

4

1 回答 1

0

“此查询在 cron 作业的帮助下发生,数千个查询同时发生在同一张表上”

这就是问题所在。cron作业是有罪的一方而不是mysql。我认为你最近达到了临界点。您需要将数据组合成较少数量的查询。类似于以下内容:

INSERT INTO users
(userid, total_received_credits, credit_amount, credit_amount) , 
values(51016 , 2.0, 2.0,  '2012-04-17 16:39:50'), 
(44016 , 3.0, 3.0,  '2012-04-17 16:39:50'), 
(11116 , 2.0, 2.0,  '2012-04-17 16:39:50') 
ON DUPLICATE KEY update total_received_credits = VALUES(total_received_credits) , 
total_received_credits = VALUES(total_received_credits), 
total_received_credits = VALUES(total_received_credits), 
credit_amount = VALUES(credit_amount)
于 2012-05-04T02:01:47.420 回答