如何在MySQL中处理来自相同结构表的20M+记录



我必须处理从大约50个不同来源收集和转换的2500万行数据。每个源导致大约500000到600.000行。每个记录都有相同的结构,而不考虑来源(比如:id、title、author、release_date(

为了灵活性,我更愿意为每个源创建一个专用表,(然后我可以很快地从源中清除/删除数据并重新加载/上传数据(使用LOAD INFOILE((。这样,似乎很容易截断表,而不会有从其他源中删除行的风险。

但是,我不知道如何在不同的表中选择具有相同作者的记录,并使用分页(LIMIT关键字(在蛋糕上切樱桃。

是将所有内容存储到一个巨大的表中并处理对25M+数据库进行索引/备份的痛苦的唯一解决方案,还是有一种抽象层可以将50个表虚拟地合并到一个虚拟表中。

对于dba来说,这可能是一个常见的问题,但我还找不到任何答案。。。任何帮助/想法都值得赞赏。Thx

这可能是MySQL分区的好地方。

这使您能够处理大量数据,同时使您有机会在需要时非常高效地在特定分区(如truncate或事件drop(上运行DML操作,而不会影响其余数据。LOAD DATA语句中也支持分区选择。

您可以像对待普通表一样在分区之间运行查询,或者在需要时针对特定分区(这可以非常有效地完成(。

在您的特定用例中,列表分区似乎是一个相关的选择:您有一个预定义的源列表,因此通常每个源有一个分区。

最新更新