我正在使用Mysql中真正的大数据。其中一个表由大约400万行组成,在这些行上不断发生更新查询。
这个update查询在一段时间之前一直执行得很顺利,但是随着行数的增加,它给我带来了锁等待超时错误的严重问题。
我搜索了它的解决方案,我得到的唯一解决方案是增加innodb_lock_wait_timeout,但我在某处读到,这实际上是解决该错误的一个糟糕的选择。
谁能帮助我如何解决这个问题而不增加innodb_lock_wait_timeout,我正在寻找一些其他的解决方案,因为增加变量time_out会增加它在整个数据库中,但我只想增加一个表的事务时间,其中有这么多的记录。
发布于 2012-05-04 10:01:47
“此查询在cron作业的帮助下进行,同一表上同时发生数千个查询”
这就是问题所在。cron作业是有罪的一方,而不是mysql。我认为你最近已经达到了临界点。您需要将数据合并到较少数量的查询中。SOmething是这样的:
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)https://stackoverflow.com/questions/10187755
复制相似问题