水平缩放Postgres

use*_*343 23 database postgresql horizontal-scaling

假设您在postgresql数据库之上运行您的业务.经过一段时间后,你会得到如此多的流量,以至于单个postgresql实例无法处理它,所以你想要添加更多实例(水平扩展)以便能够处理增长.

您的数据是关系型的,因此可能无法切换到某些键/值解决方案.

你会如何用postgresql做到这一点?

PS.Postgresql版本:9.5

小智 20

  1. 如果它是读取繁重的工作负载,那么您应该只添加副本.添加尽可能多的副本以处理整个工作负载.您可以循环方式平衡副本中的所有查询.

  2. 如果它是关于写入繁重的工作负载,那么您应该跨多个服务器对数据库进行分区.您可以在不同的计算机上放置不同的表,也可以在多台计算机上对一个表进行分片.在后一种情况下,您可以通过主键的范围或主键的哈希值甚至是行的垂直方式对表进行分片.在上述每种情况下,您可能会丢失事务性,因此请务必小心并确保事务更改和查询的所有数据都驻留在同一服务器上.

  • @alelom 我认为_你可能会失去交易性_ 他的意思是你可能会失去交易通常为你提供的 ACID 保证:https://en.wikipedia.org/wiki/ACID (2认同)