6

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

4

3 回答 3

3

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

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

于 2018-10-05T18:46:25.377 回答
-1

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

于 2015-12-09T06:52:35.400 回答
-6

我重新启动了 MySQL 实例,并且相同的查询有效。

于 2011-11-13T03:21:19.647 回答