MySQL 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万条记录。可能是表的大小是问题还是我的查询有问题?

如果您使用的是InnoDB引擎,请尝试增加IO线程的默认数量。RDS默认值为可怜的4。您需要重新启动DB实例,以便Parameter Group使用新值,因为它们不是"动态的"(需要重新启动)。

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

在AWS RDS上,我有一个DB实例被填满了,这导致了客户端的这个错误。

我重新启动MySQL实例,相同的查询工作

相关内容

  • 没有找到相关文章

最新更新