在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万条记录。可能是表的大小是问题还是我的查询有问题?
答案 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实例并且相同的查询工作正常。