0

我正在使用一个使用 MyISAM 存储引擎的 MySQL 数据库。我使用多表删除语法。到目前为止,我只在需要一次从多个子表中删除时使用它。但我正在考虑使用它在一个查询中从多个子表和父表中删除。

最近,我在 SO 和其他论坛上看到一些帖子说一次从多个表中删除是个坏主意。但是没有一张海报解释了为什么不推荐它。

我知道涉及具有外键约束的 InnoDB 表的多表删除可能会出现问题,因为您无法控制表的处理顺序。显然,在我的情况下这不是问题。

我曾认为多表删除会从所有表中删除或不删除。但我找不到关于这是否属实的信息。如果它可以部分成功,那将破坏数据。

一次从多个 MyISAM 表中删除是不是一个坏主意?这总是一个坏主意,还是仅在涉及父母/子女关系时才这样做?请解释原因。

作为记录,此时更改为 InnoDB 不是该项目的选项。

4

1 回答 1

1

我可以看到的一个可能的问题是,如果出现故障(如服务器故障、断电等)并且您已经在相关子记录之前删除了父记录(从父表中),那么您有什么被称为orphan record(s)意味着相关的子记录/表不能再与母记录/表相关。虽然如果您在父表/记录之前先删除子表/记录,这可以克服。

另一个原因是performance issue由于MyISAM使用了表级锁定,因此(从多个表中)删除多条记录比从少数来源删除更可能降低访问时间性能。

于 2013-06-13T03:54:34.437 回答