删除 MySQL 行导致锁表错误

删除 MySQL 行导致锁表错误

我有几百万行数据需要删除,但如果没有这个错误,它们就无法一次删除

错误 1206 (HY000):锁的总数超出锁表大小

所以我写了一个脚本,每次删除 100,000 行。它运行了一次,但当我第二次运行它时,第一次尝试删除 10,000 行时出现错误。

我尝试删除 10,000 行的方式是使用引用所有 200 万行的删除语句,但我使用限制子句仅影响 10,000 行。

我尝试在第一次删除之前向脚本添加“unlock tables;”语句,但这没有帮助。第一次删除时仍然出现锁定表错误。

有什么想法我可以这样做吗?

有什么方法可以告诉它不要锁定记录吗?我可以确保没有其他任何东西访问该表。

答案1

是InnoDB存储引擎吗?

此错误意味着 MySQL 没有足够的空间来存储执行查询所需的所有行锁。根据您拥有的 RAM,将其设置innodb_buffer_pool_size为合理的值(256MB、512MB),您可能永远不会遇到此错误。

使用 检查默认值mysql> show global variables like 'innodb_buffer%';

相关内容