亚马逊RDS实例类型(PostgreSQL)的实际差异

4
我相对于在AWS上设置PostgreSQL数据库比较新。我正在尝试弄清楚Amazon RDS实例类型之间的实际区别。以下是有关我的组织和用例的一些背景信息:
  • 我们主要是由少于5个用户的数据分析师/数据科学家组成的小团队
  • 我们不需要100%的正常运行时间。我可能会在正常工作时间打开数据库,然后关闭。我们的用例主要是为了分析/数据科学目的,没有实时应用程序运行在其上。
  • 现在我们只需要一个数据库。
  • 数据库将包含大约300-500GB的数据。大多数表很小(不到1GB)。但是,有一些表非常大。最大的表将是大约80GB,并且将经常查询。还有一些其他的表大约10GB。
我现在从免费层开始 db.t2.micro 只是为了获得一些经验,开发并测试我所需的内容。然而,这很难让我理解与其他实例的比较。我们的团队现在也非常注重预算,因此我正在尝试在提升之前确定范围。

我正在尝试执行的示例操作

  1. 从CSV加载表格:我们有很多存储在磁盘上的CSV文件,我将把它们加载到PostgreSQL数据库中。我刚刚测试了一个,创建了一个表格,并使用\copy将一个11 GB文件(35,401,551行和40列)的CSV加载到表格中,这需要大约27分钟。升级实例会有帮助吗?如果有,我不确定我想要升级到什么?
  2. 从该表格中进行select count(*)查询需要大约15分钟(第一次运行时;第二次运行时需要大约3分钟,可能是因为缓存统计数据?但对我来说3分钟仍然很慢)。同样,我不确定升级实例是否有帮助?我还应该指出,我没有添加主键或索引。因此,可能有其他优化性能的方法而无需升级实例?例如,分区可能会有所帮助:https://www.postgresql.org/docs/10/ddl-partitioning.html。该表格具有一个state列,这是用户经常使用的第一个过滤器之一,因为用户通常只想查看一个或一组特定的州。
    1. 一个简单的分组查询:select ColA, count(*) group by ColA需要大约2.5分钟

编辑 我注意到了一些其他有用的资源:

  1. https://www.apptio.com/blog/ec2-m5-vs-t3/ 关于选择 m5 vs t3 的文章
1个回答

1

在RDS中,主要区别是实例类型的以下内容:

  • 可用内存
  • 可用CPU
  • 最大网络吞吐量
  • 突发性与非突发性(T实例族使用突发信用,一旦这些信用用尽,您的CPU将被限制)。

由于您正在使用T2.micro,因此只有一个CPU可用。一旦信用用尽,您的CPU也将被限制在20%的最大CPU上,这将限制您能够做什么。

我还要指出,如果您能够在AWS平台上投入更多资金,则有专门用于分析的数据仓库解决方案Redshift,这可能表现更好,但成本也更高,它也是从Postgres分叉而来。

如果坚持在RDS中使用Postgres,则还应考虑Aurora Postgres,它通常提供普通Postgres RDS的2-3倍性能。


只是为了非常基础的解释,例如,每次进行任何操作(例如 select count(*)),我都在使用 CPU?所以我拥有的 CPU 越多,这些操作就会越快?或者当涉及到这些 select 查询时,CPU 和内存之间有什么区别呢? - Vincent
会有一些 CPU 使用率,内存只有很少的量(1GB),所以对数据集进行计算后返回结果必须在磁盘上执行。您还可以通过使用 Provisioned IOPs 来改善这种情况,以提高卷类型的性能。 - Chris Williams
好的,从高层次上讲这很有道理。我正在努力弄清楚的更广泛的问题是:“我的性能当前是被实例类型限制还是被我的数据库配置限制?”例如,在后者方面,我尚未添加分区、索引、主键等。如果我做了这些,可能会导致性能升级,那么升级实例类型会带来什么额外的好处?我们小组的预算非常敏感(例如,如果可能的话,试图将成本控制在每年1,000美元左右),因此首先要确定这些问题的范围。 - Vincent
1
根据您的配置,我相信如果您有300-500GB,则资源总体上将是更高的容量。RDS确实拥有一个很好的工具,用于查看查询的性能以及这些命中来自何处:https://aws.amazon.com/rds/performance-insights/ - Chris Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接