在删除InnoDB表上的记录时避免新写入时的锁定错误

时间:2013-12-26 22:38:48

标签: java mysql

我有一个(java)应用程序,它在启动时运行数据库清除查询。根据用户的不同,这些查询最终可能会删除数十万条记录。我已经分解了查询,因此它们被限制为5000条记录,每次查询之间都有一些喘息空间。

该表使用InnoDB。

示例查询:

DELETE FROM table WHERE epoch <= '1388094517' LIMIT 5000;

但是,某些用户看到了锁定问题的各种错误:

java.sql.SQLException: The total number of locks exceeds the lock table size
java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction

建议使用mysql配置更改是不可能的,因为这是一个分布式应用程序。我可以采取哪些步骤来确保删除查询不会导致锁定错误?

应用程序在启动时开始记录数据,并且需要能够在当前删除查询运行时写入数据库。

0 个答案:

没有答案