MySQL Amazon RDS:超出锁定等待超时

时间:2011-11-09 05:05:29

标签: mysql timeout deadlock amazon-rds

在Mysql(Amazon RDS)上,当我尝试运行以下SQL查询时

UPDATE
    table1 INNER JOIN table2 USING (CommonColumn)
SET
    table1.col1 = table2.x,
    table1.col2 = table2.y

我一直在52秒后得到此错误:

Error Code: 1205. Lock wait timeout exceeded; try restarting transaction

我该如何解决这个问题?

table2有大约1700万条记录,table2是table1的一个子集,有400万条记录。可能是表的大小是问题还是我的查询有问题?

3 个答案:

答案 0 :(得分:0)

在AWS RDS上,我有一个数据库实例填满,导致客户端出现此错误。

答案 1 :(得分:0)

如果使用InnoDB引擎,请尝试增加IO线程的默认数量。 RDS的默认值为4。您将需要重新启动参数组的数据库实例才能使用新值,因为它们不是“动态的”(需要重新启动)。

show variables like 'innodb_%io_threads'; +-------------------------+-------+ | Variable_name | Value | +-------------------------+-------+ | innodb_read_io_threads | 4 | | innodb_write_io_threads | 4 | +-------------------------+-------+

答案 2 :(得分:-3)

我重新启动了MySQL实例并且相同的查询工作正常。