我有 50GB 的 mysql 数据库(80 个表),我需要从中删除一些内容。 我有一个引用表,其中包含需要从其他表中删除的产品 ID 列表。
现在,其他表可以是每个 2 GB,包含需要删除的项目。
我的问题是:既然不是小数据库,怎么删除最安全 一次性处理数据以避免出现问题?
验证整个数据是否已删除的最佳方法是什么?
最佳答案
可能这不再有帮助了。但是在创建数据库时应该记住这一点。在 mysql 中(取决于表存储类型,例如在 InnoDB 中)您可以指定关系(它们称为 foreign key constraints )。这些关系意味着如果您从一行(例如产品)中删除一个条目,您可以自动更新或删除将该行作为外键的其他表(例如 product_storage)中的条目。这些关系确保您拥有 100% 一致的状态。然而,这些关系可能很难事后补充。如果你打算更频繁地这样做,如果你能把这些添加到你的数据库中,那绝对值得研究,它们会为你节省很多工作(各种查询变得更简单)
如果没有这些关系,您就无法 100% 确定。因此,您必须遍历所有表,而不是要检查哪些列,然后编写一堆 sql 查询以确保没有留下任何条目。
关于MYSQL批量删除FROM 80张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243170/