600GB从CSV或数据库标准化?

时间:2013-11-30 09:57:13

标签: mysql database-design database-migration

我刚刚开始规范化600GB数据库。我们正在使用sqldump将Amazon RDS移植到我们的本地服务器(64GB RAM和1,5TB SSD),我们将在这里托管新的规范化数据库。

数据库由一个表组成,我们将制作4个不同的表以删除所有冗余数据。

我的问题是:什么可能是最好的过程?

  1. 将所有600GB恢复到本地临时数据库并使用移植脚本从那里查询数据并插入新的规范化结构。

  2. 下载CSV转储而不是.sql文件并编写一个读取CSV的移植脚本并将日期提供给新的规范化结构?

    1. 是否有更好的方法可以重新分解该大小的数据库?
    2. 对于构建缓存脚本以处理冗余外键查找的两种解决方案,但也许mysql可以以某种方式处理它?

1 个答案:

答案 0 :(得分:3)

在SQL数据库中工作通常比使用外部文件更容易,更快捷。

它可以为您提供更好的性能,还可以让您轻松保留原始列类型(如果这是您想要的)。如果您通过CSV(实际上只是文本),您可能必须非常小心数据类型。

所以我更喜欢选项1,最好在原始表的提取上测试脚本,该表只包含原始记录的一小部分。

虽然新数据库占用的空间比未经正常化的数据库少,但如果您的1.5 TB SSD是唯一附加的存储空间,那么转换完成之前它将会相当充满,之前你删除原来的。日志文件可能非常大,具体取决于您的操作方式。你可能想暂时在那里贴一些额外的TB硬盘。

如果这是一个问题,完全在远程机器上进行转换是否可行?然后,您只需要将转换后的数据库下载到本地服务器。