在 Azure Cosmos DB for PostgreSQL 中选择分片计数

适用对象:Azure Cosmos DB for PostgreSQL(由 PostgreSQL 的 Citus 数据库扩展提供支持)

为每个分布式表选择分片计数可以在更多分片所提供的灵活性,与针对分片规划和执行查询所产生的开销之间取得平衡。 如果在分配某个表之后决定更改其分片数,可使用 alter_distributed_table 函数。

多租户 SaaS 用例

最佳选择因数据的访问模式而异。 例如,在多租户 SaaS 数据库用例中,我们建议选择 32 到 128 之间的分片。 对于较小的工作负载(例如 <100 GB),可以从 32 个分片开始;对于较大的工作负载,可以选择 64 或 128 个分片。 这种选择为从 32 台工作器计算机扩展到 128 台提供了余地。

实时分析用例

在实时分析用例中,分片计数应与工作器的核心总数相关。 为确保最大并行度,应在每个节点上创建足够的分片,便于每个 CPU 核心至少有一个分片。 我们通常建议创建大量(例如,是当前 CPU 核心数量的 2 倍或 4 倍)的初始分片。 如果添加更多工作器和 CPU 核心,就有更多的分片可用于将来的扩展。

请记住,对于每个查询,Azure Cosmos DB for PostgreSQL 将为每个分片打开一个数据库连接,但这些连接是受限的。 注意保持足够小的分片计数,这样,分布式查询就不必经常等待连接。 换言之,所需的连接数 (max concurrent queries * shard count) 不应超过系统中可以建立的连接总数 (number of workers * max_connections per worker)

后续步骤