SQL数据库连接数真的是越大越好吗?
共 791字,需浏览 2分钟
·
2022-05-14 09:59
PostgreSQL max_connections配置优化参考资料: https://www.cnblogs.com/wy123/p/14087274.html
https://blog.csdn.net/antch620/article/
details/120902705
最佳性能是当存在300-500个并发连接时。在700之后,性能急剧下降(就每秒事务数和延迟而言)。超过1000个连接的任何连接均表现不佳,并且延迟不断增加。在Google Cloud和Heroku这些云平台上,也将max_connections限制在了500左右。难怪国外大佬们会给出"a few hundred,""not more than 500," and "definitely no more than 1000."
从上面可以得到一个通用的结论,max_connections不建议超过700,最大不超过1000,300 ~ 500区间性能最好。
max_connctions不易过大,要考虑到local memory,尤其是work_mem,推荐300 ~ 700区间的值,再高性能就损耗明显了,对于高吞吐量的数据库,可以考虑使用应用层面内置的连接池,也可以使用应用和数据库中间一层的连接池如pgbouncer。
如何处理对数据库的并发请求数大于数据库的最大连接数:
如果连接数是一个合理的值,不是100或者200,真正的并发数超出最大连接数,此时必须使用连接池,否则会报超出最大连接数的错误,连接池不仅可以提高连接效率,在超出最大连接后等待机制,也可以起到了限流的作用。
而如果真的不去限制最大连接数,随着并发的增加去机械地增加连接数,只会冲垮数据库,即便冲不跨数据库,其结果就是所有的请求,在数据库里相互牵制相互拖累。