如果你在云中使用PostgreSQL,为了获得你的业务需要的结果,你很有可能会花费更多的钱。
根据Dani Guzmán Burgos提出的建议,让我们看看如何在少花钱的情况下获得所需的福利雷竞技下载官网Praybet雷竞技竞猜在线官网ercona监控和管理(PMM)技术主管,开始这个网络研讨会(现可点播)于去年11月举办。
减少使用:如何减少PostgreSQL云计算成本
降低成本的第一步是使用你需要的,而不是更多。不要为你不使用或不需要的容量付费。
减少使用是一个持续的过程。确定可以削减哪些资源以减少每月账单可能很困难,但查看正确的指标将帮助您了解应用程序的实际需求。
在PMM的主仪表板中,正在监视的任何数据库服务的CPU利用率低可能意味着服务器处于非活动状态或配置过多。raybet雷竞技竞猜在线官网图1中红色标记的是CPU使用率低于30%的服务器。PMM还可以向您显示历史数据,这些数据可以帮助您确定服务处于给定状态的时间。CPU指标的配置可以在仪表板中更改。在PMM 2.32.0及更高版本中可以使用面板上的这些颜色编码状态。
图1:PMM主仪表盘
来自亚马逊网络服务(AWS)文档,如果实例的至少一个规格(如CPU、内存或网络)可以缩小,同时仍然满足工作负载的性能要求,并且没有规格供应不足,则认为实例供应过剩。过度配置实例可能会导致不必要的基础设施成本。
高效地使用资源并确保这不会影响云计算可用的预算,这不是一次性的解决方案,而是选择适当规模的资源并消除过度配置的持续循环。
大规模减少使用需要文化上的转变,工程师必须考虑成本,因为他们认为内存或带宽是另一种部署KPI.
想象一下,一家游戏公司创造了一款越来越受欢迎的游戏,所以支持更多用户所需的资源数量将大大增加。但如果游戏不再受欢迎,服务器就会过度配置,分配的资源必须重新调整以更好地适应应用程序的需求。
调整大小以节省成本
减少使用有三种方法:
不管你使用什么方法来部署你的PostgreSQL实例,这里有一些指标可以确定何时需要调整大小:
- CPU利用率
- 内存使用情况
- 网络吞吐量
- 存储使用情况
请记住,优化基础设施不仅仅是为了节省成本。当您根据指标做出决策时,您必须确保操作不受影响。主要目标是确保服务本身不会耗尽所需的操作容量。
云中的PostgreSQL
CPU
考虑到AWS是您选择的云平台,为基础设施所做的配置将影响应用程序的性能和每月的成本。例如,Amazon弹性计算云(EC2)实例Graviton2处理器将是一个比非arm选项更好的选择,因为它更便宜,你将得到真正的和更快的核心,这意味着CPU核心是物理的,而不是物理的超线程.引力2处理器的目标保留的实例从长远来看是为了节省成本。
引力2处理器的好处
- 适用于各种工作负载的最佳性价比
- 广泛的软件支持
- 增强云应用程序的安全性
- 可与托管AWS服务一起使用
- 亚马逊EC2中每瓦能量的最佳性能
存储
继续AWS示例,选择正确的存储选项将是性能的关键。Amazon Elastic Block Store (EBS)是磁盘空间的最佳选择。
从AWS文档Amazon EBS是一种易于使用、可扩展、高性能的块存储服务,专为Amazon EC2设计。

图2:亚马逊弹性块存储
运行关系数据库或NoSQL数据库是建议使用EBS的用例之一。您可以部署和扩展您的数据库,包括SAP HANA、Oracle、Microsoft SQL Server、PostgreSQL、MySQL、Cassandra和MongoDB。
使用EBS,您可以配置针对大型流工作负载优化的基于hdd的卷或针对事务性工作负载优化的基于ssd的卷(推荐用于数据库工作负载)。
SSD卷类型包括:
- io1
- io2
- io2 Block Express
- gp2
- gp3
哪个是更好的存储选择?这取决于您的工作负载的需求,包括磁盘空间、每秒输入/输出操作(IOPS)和吞吐量率(MB/s),您的配置也必须是成本优化的。
Avi Drabkin的博客是关于这个问题的推荐读物,因为他分析了每种卷类型所需的配置,以满足特定用例的需求。有关EBS卷类型的详细信息,请检查Amazon EBS卷类型页面。
多AZ部署vs.读副本
Multi-AZ部署
在亚马逊RDS中Multi-AZ部署, Amazon RDS自动创建一个主数据库实例,并将数据同步复制到其他AZ中的实例中。当Amazon RDS检测到故障时,自动切换到备用实例,无需人工干预。

读副本
Amazon RDS使用源DB实例的快照创建第二个DB实例。然后,当源DB实例发生更改时,它使用引擎的本机异步复制来更新读副本。的读副本作为只允许只读连接的DB实例运行;应用程序可以连接到读副本,就像连接任何DB实例一样。Amazon RDS复制源DB实例中的所有数据库。
图4:Amazon RDS Read Replicas
哪个选择更好?
多az部署提供了优势,特别是对于HA和灾难恢复。多az部署的代价是昂贵的。
更好的选择是部署读取器实例,并将它们与反向代理的使用相结合,例如pgpool-II或pgbouncer。读取器实例的成本也高于标准设置,但您可以在生产中使用它们来处理日常数据库流量。
Pgpool-II不仅可以用来减少连接的使用,这将有助于减少CPU和内存的使用,而且也可以这样做负载平衡.通过负载平衡,您可以重新分配流量,自动将读请求发送到读副本,并将写请求发送到主数据库实例。
关于读副本,在AWS中,不能提升RDS PostgreSQL读副本,这意味着读副本不能成为主实例。无论何时尝试这样做,读副本都会从主实例中分离出来,成为自己的主实例,最终您将拥有两个不同的集群。
一种解决方案是使用plogic扩展在RDS路径之外创建副本。当将plogic复制与反向代理结合使用时,您仍然可以获得托管数据库的好处,包括备份、小型升级维护、恢复支持,以及绑定到Multi-AZ配置,这转化为对计划故障转移的完全控制。
此外,将副本转换为主实例是一种更好的升级方法。例如,如果您需要升级具有大量数据的数据库,这个过程可能需要几个小时,并且在此期间您的实例将不可用。因此,通过这个配置,您可以升级一个副本,然后在不中断操作的情况下将该副本转换为主实例。
检查这篇博文有关如何使用pglologic升级数据库实例的详细信息。
真空
如在这篇博文当更新表或索引时,数据库中会产生膨胀,更新本质上是一个删除和插入操作。删除所使用的磁盘空间可用于重用,但不能回收,从而产生了膨胀。
如何去除腹胀?这就是在autovacuum和vacuumdb的帮助下,真空过程的目的。
Autovacuum是一个自动执行VACUUM和ANALYZE(收集统计信息)命令的守护进程。Autovacuum检查数据库中膨胀的表并回收空间以供重用。
vacuumdb是一个用于清理PostgreSQL数据库的实用程序。vacuumdb还将生成内部统计数据,供PostgreSQL查询优化器使用。vacuumdb是SQL命令VACUUM的包装器。
在一个包含存储数十tb的表的数据库上运行Autovacuum可能会成为一个巨大的开销,不仅是数据量,而且是在每个事务上生成的死元组。解决方案可能是将EBS卷类型更改为io1以支持此工作负载,但您的每月账单也会增加。
raybet雷竞技竞猜在线官网还建议监视数据库中的死元组(膨胀)。对于这个问题,你可以使用实验PostgreSQL真空监测raybet雷竞技竞猜在线官网.这个试验性的仪表盘不是PMM的一部分,但是您可以尝试并提供反馈。
那么无服务器呢?
使用无服务器,您实际上只为您正在积极使用的资源付费,未使用的资源通常不容易到处乱飞,但转向无服务器并非没有成本。构建任何到无服务器的迁移计划的复杂性在于执行,与节省成本关系不大。有一个完全不同的视角可以用来评估无服务器:总拥有成本(TCO)。
TCO指的是构建解决方案所需的工程团队的成本,以及服务上市时间对成功和盈利能力的影响。无服务器允许您将大量责任委托给云提供商。
DevOps工程师通常执行的任务(服务器管理、扩展、供应、补丁等)变成了AWS、GCP或Azure的职责。这让开发团队有空闲时间来更快地专注于发布差异化的功能。
对于TCO,在考虑从单一应用程序迁移到无服务器应用程序时,必须考虑人员成本可能会抵消任何基础设施节省。
回到收益与工作量的对比,您应该考虑为无服务器重新设计服务的总体成本与降低成本的潜力。
结论
在选择要向云服务提供商支付的服务和硬件配置时,了解项目的数据库需求至关重要。您所做的配置必须保证应用程序的正常运行,并将确定每月的费用。
所需的资源数量可能随着时间的推移而变化,CPU使用情况、内存使用情况和磁盘存储等指标将帮助您确定何时需要调整基础设施的大小。
例如,如果数据库事务的数量在一段时间后减少,您将拥有比您需要的更多的资源,那么更改基础设施的配置以保证新的需求并支付实际使用的资源将非常重要。
按照本次网络研讨会中提出的建议,您可以在不影响数据库性能的情况下设计成本优化的基础设施。
雷竞技下载官网Percona发行版为PostgreSQL提供了来自开源社区的最好和最关键的企业组件,在一个发行版中,设计和测试了一起工作。






