首页 » 初创公司 CTO 的 Postgres 使用手册

初创公司 CTO 的 Postgres 使用手册

您即将开始一个新项目 – 或者创办一家新公司 – 并且您决定依赖 Postgres。困难的部分(选择数据库)已经结束,现在有趣的部分开始了:确保您几年内不必再考虑它。

在这篇文章中,您将找到一些鲜为人知的长期设置 Postgres 的技巧,从连接池到安全基础知识再到扩展和索引。

使用 PGBouncer 为 Postgres 设置连接池
默认情况下,Postgres 从主操 Viber 电话列表   作系统进程中为每个客户端连接分叉一个单独的进程。在数量较少的情况下,创建和销毁这些进程所需的时间以及它们永远不会被重复使用的事实并不重要。您可以手动设置最大连接数,但最终,随着规模的扩大,您可能会遇到问题。连接池本质上有助

于“缓存”这些进程

并在客户端连接和断开数据库时重用它们。

虽然可以将连接池集成到应用程序逻辑中,但许多人选择第三方工具,对于 Postgres 来说,那就是 PGBouncer。这是一个开源的、轻量级的连接池,可以安装在数据库服务器或应用程序服务器上。您可以在三个池化级别之间进行选择:

会话池:遵循“客户端连接不确定”模型,只要客户端处于连接状态,就保持连接打开。
事务池:连接持续单个事务,之后被发送回池


语句池:连接仅持续一

个查询,因此如果您在  热身选项可确保您  事务中有多个连接,它根本不起作用。
许多人选择会话池:它是中断连接最保守、风险最小的解决方案,但每个应用程序都不同,您必须了解哪种模式适合您的限制。

信息
大多数 Web 框架将此留给第三方工具(查看 PGBouncer 上的这个 Django 论坛主题),但 Rails 提供了内置的连接池功能。

连接池对性能的影响

然而,最值得思考的问题是:它真的有效吗? Percona 运行了一系列基准测试来了解 PGBouncer 对性  阿拉伯联合酋长国电话号码  能的影响。当并发客户端数量较少(<60)时,由于池化开销,PGBouncer 会显著降低每秒事务数 (TPS)。但是当您扩展到 100 多个客户端时,您会开始看到显著的性能优势。

滚动至顶部