我有一个以规范化格式提供的数据 SQL 数据库,其中包含多个包含数十亿行数据的表。我决定按 itemId 将大型表分区为单独的表,因为当我查询数据时,我一次只关心 1 个项目。在对数据进行分区后,我最终会得到 5000 多个表。问题是,对数据进行分区大约需要 25 分钟才能为 1 项构建一个表。
5000 items x 25 minutes = 86.8 days
对整个 SQL 数据库进行完全分区需要超过 86 天的时间。我的整个数据库大约有 2.5TB。
我可以利用 AWS 在项目级别上进行并行化吗?我是否可以使用 AWS 数据库迁移服务以当前形式托管数据库,然后使用 AWS 流程搅动所有 5000 个查询,将大表划分为 5000 个较小的表,每个表包含 200 万行?
如果不是,我是否需要投入更多硬件才能使其运行得更快(CPU 或 RAM)?
提前致谢。
最佳答案
这似乎不是一个好的策略。一方面,简单的算术是,10,000,000,000 行(每项 5,000 行)会在表中产生 2,000,000 个分区。
Redshift 中的限制(默认情况下)为 1,000,000 partition per table :
Amazon Redshift Spectrum has the following quotas when using the Athena or AWS Glue data catalog:
- A maximum of 10,000 databases per account.
- A maximum of 100,000 tables per database.
- A maximum of 1,000,000 partitions per table.
- A maximum of 10,000,000 partitions per account.
您应该重新考虑您的分区策略。或者您的问题可能不适合 Redshift。可能还有其他更适合您的用例的数据库策略。 (但是,这不是推荐特定软件解决方案的论坛。)
关于sql - 如何使用AWS快速分区100亿行SQL表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50846460/