MRG表包含1B +行,分布在几个较小的表中。其他观察将添加到MRG表中,这会将它们添加到最后一个基础表中。
由于某些原因,似乎有几个重复的行共享相同的主键。我知道这是MRG表的局限性,在我们的情况下这并不是真正的问题(它只是意味着无用的冗余)。我们认为,重复项是在系统崩溃后插入的,因此应用程序的代码无法正确地进行重新处理,该代码在插入存档之前从临时表中删除了重复项。
话虽这么说,是否有一套最佳实践来保持唯一性而又不需要太多的处理时间?
最佳答案
您将始终有重复的风险。
https://dev.mysql.com/doc/refman/5.7/en/merge-storage-engine.html说:
... MERGE表无法对基础表集实施唯一性。
不要使用MERGE表。 MERGE仅与MyISAM和you shouldn't be using MyISAM一起使用。
而是使用PARTITIONING。您可以在给定表的所有分区上实施唯一性。