首页 > 解决方案 > 如何计算最佳连接总数并找到要使用的数据库实例类型?

问题描述

如何计算从我的服务到我的数据库端点的最佳总连接数?是否有基于每秒预期查询数以及每个查询占用的 CPU 和 IO 的基本公式?

同样,是否有公式可以根据流量模式和查询特征(CPU、IO 消耗或查询延迟)计算要使用的最佳数据库实例类型/大小?

我将使用它在我的服务中创建连接池。我假设如果我的服务有 N 个主机,那么每个主机的连接池大小需要是总的最佳连接数除以 N。

注意:实例类型是指类似于 AWS EC2 实例类型,它提供有关 vCPU 和内存 (RAM) 的信息

标签: databasemongodbpostgresqldatabase-connectionaws-documentdb

解决方案


在确定数据库机器的大小时,关键的衡量标准是并发活动的数据库会话的数量。由于每个活动会话至少对应一个数据库进程,因此您必须提供足够的 CPU 能力和 I/O 容量来同时处理它们。

该数字的估计值为average query duration in seconds * number of queries per second. 您必须至少拥有那么多内核,并且您的 I/O 系统必须能够处理那么多并发 I/O 请求。

在确定连接池的维度时,您还必须考虑数据库在等待来自客户端的下一条语句时在事务中空闲的时间。

最大连接池大小为number of concurrent queries the database can handle / (transaction busy ratio * average query duration in seconds * number of queries per second). transaction busy ratio是- 因此,如果您的active time for a transaction / total time for a transaction所有事务仅包含一条语句(这意味着没有时间花在等待事务中的下一条语句),那么该比率将为 1。

在实践中,很难估计或测量理想的池大小,您必须运行负载测试以查看在不使数据库过载的情况下可以使池达到多大。


推荐阅读