我正在处理Mysql中真正重要的数据。其中一个表包含大约400万行,不断更新查询。
此更新查询正在顺利执行,直到某些时间回来,但随着行的增加,它给出了严重的锁定等待超时错误问题。
我搜索了它的解决方案,我得到的唯一解决方案是增加innodb_lock_wait_timeout
,但我读到了某个地方,这实际上是解决该错误的不良选择。
任何人都可以帮助我如何解决这个问题而不增加innodb_lock_wait_timeout
,我正在寻找其他解决方案,因为增加变量time_out会增加整个数据库,但我想增加交易时间一张表有这么多记录。
答案 0 :(得分: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)