MYSQL批量删除FROM 80张表

标签 mysql transactions dependencies

我有 50GB 的 mysql 数据库(80 个表),我需要从中删除一些内容。 我有一个引用表,其中包含需要从其他表中删除的产品 ID 列表。

现在,其他表可以是每个 2 GB,包含需要删除的项目。

  1. 我的问题是:既然不是小数据库,怎么删除最安全 一次性处理数据以避免出现问题?

  2. 验证整个数据是否已删除的最佳方法是什么?

最佳答案

可能这不再有帮助了。但是在创建数据库时应该记住这一点。在 mysql 中(取决于表存储类型,例如在 InnoDB 中)您可以指定关系(它们称为 foreign key constraints )。这些关系意味着如果您从一行(例如产品)中删除一个条目,您可以自动更新或删除将该行作为外键的其他表(例如 product_storage)中的条目。这些关系确保您拥有 100% 一致的状态。然而,这些关系可能很难事后补充。如果你打算更频繁地这样做,如果你能把这些添加到你的数据库中,那绝对值得研究,它们会为你节省很多工作(各种查询变得更简单)

如果没有这些关系,您就无法 100% 确定。因此,您必须遍历所有表,而不是要检查哪些列,​​然后编写一堆 sql 查询以确保没有留下任何条目。

关于MYSQL批量删除FROM 80张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243170/

相关文章:

php - 使用 Yii2 查询生成器创建 mysql 查询,strpos : array given

java - Maven 3项目间依赖与war打包

mysql - 列计数与分组中第 1 行的值计数不匹配

mysql - Docker(docker-compose) Node +MySQL : ECONNREFUSED

java - 获取 Spring Security ACL 查找以使用 mysql 只读副本

java - 如何将 @EnableTransactionManagement 与 StaticMethodMatcherPointcutAdvisor 结合使用

javascript - 将 webSQL 结果存储到 var 以供其他函数使用?

java - Oracle Select for update 不起作用,有时会在一段时间后挂起

grails - BuildConfig.groovy Grails 2.2.3中的自定义插件传递依赖项解析

Android aar 文件所需的依赖项未加载