如何解决如何计算最佳连接总数并找到要使用的数据库实例类型?
如何计算从我的服务到我的数据库端点的最佳总连接数?是否有基于每秒预期查询数和每个查询占用的 CPU 和 IO 的基本公式?
同样,是否有公式可以根据流量模式和查询特征(CPU、IO 消耗或查询延迟)计算要使用的最佳数据库实例类型/大小?
我将使用它在我的服务中创建连接池。我假设如果我的服务有 N 个主机,那么每个主机的连接池大小需要是最佳连接总数除以 N。
注意:实例类型是指类似于 AWS EC2 实例类型,它提供有关 vCPU 和内存 (RAM) 的信息
解决方法
在确定数据库计算机的大小时,关键的衡量标准是并发活动的数据库会话数。由于每个活动会话至少对应一个数据库进程,因此您必须提供足够的 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。>
在实践中,很难估计或衡量理想的池大小,您必须运行负载测试来查看在不使数据库过载的情况下可以使池有多大。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。