在 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。您需要重新启动参数组的数据库实例才能使用新值,因为它们不是“动态”的(需要重新启动)。
show variables like 'innodb_%io_threads';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| innodb_read_io_threads | 4 |
| innodb_write_io_threads | 4 |
+-------------------------+-------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)