我有一个在 Amazon MySQL/RDS 上运行的应用程序,需要维护 2 周的事务历史记录,之后可以(通常)清除数据。因为这不是一个硬性规则,所以我不能使用按天或按周进行分区来最有效地删除旧数据。
有几个表需要清除,其中许多表具有多个索引和外键约束(父/子)。
我正在删除块中的数据(一次 1000-3000 行)并在每个块之后提交。删除一定数量的块后,清除代码会暂停一段时间。
我的问题是这个过程在 10 到 15 分钟内非常有效,之后我开始看到删除数据块的延迟很大。我相信我的 SQL 尽可能高效。我可以在 MySQL 中的哪个位置更好地了解瓶颈?如果我停止我的代码并等待 15-20 分钟,删除性能会再恢复 10 分钟。