mysql 上的 DELETE 查询失败

mysql 上的 DELETE 查询失败

我们刚刚对一个有 54 MM 行的 mysql 表运行了一个删除查询。该查询应该删除大约 40 MM 条记录。它运行了大约 2 个小时,之后表状态没有改变。执行时show table status显示的行数与运行删除查询之前相同。表引擎是 InnoDb。

该表现在几乎无法使用。简单的选择查询挂在该表上。知道可能出了什么问题吗?

答案1

根据问题中的少量信息,提出一些想法和参考:

  • 您说它运行了 2 个小时。它是否真的完成了删除操作并且没有错误消息,或者该作业仍在运行?如果它仍在运行,则可能解释了为什么 SELECT 查询挂起。如果它仍在运行,除非需要立即使用数据库(考虑完全恢复它所需的时间),否则我会让它在接下来的一天左右运行。
  • 检查 MySQL 错误日志中是否有相关消息。
  • 您在执行 DELETE 操作之前有备份,对吗?如果没有,那么在开始摆弄东西之前一定要先备份,这是一个教训(这是我从惨痛经历中学到的教训)。
  • 请参阅 MySQL 页面删除速度删除语法获得更快删除操作的众多技巧。
  • 删除时,先尝试禁用表上的所有索引,然后删除,重建。
  • 尝试一次删除较少的行。
  • 不要删除 4400 万行,而是将所需的 1400 万行复制到新表中,删除旧表,重命名新表。

相关内容