【问题标题】:connect C# to PgBouncer将 C# 连接到 PgBouncer
【发布时间】:2017-11-28 23:23:55
【问题描述】:

我正在使用 C# 和 PostgreSQL。我已经使用 Npgsql 连接到 PostgreSQL。一切正常。现在我想在 PgBouncer 工具的帮助下使用连接池。数据库信息已设置为 PgBouncer。因为现在 PgBouncer 将负责连接到 PostgreSQL 数据库(如果我错了,请纠正我)。

但问题是,我找不到在 C# 中连接 PgBouncer 的方法。如果有人做过同样的事情,请告诉我。

在 PostgreSQL 中使用连接池而不是 PgBouncer 是否也很好?如果是,请告诉我该怎么做。

谢谢

【问题讨论】:

  • Nick 如果我们使用 PgBouncer,我不知道如何使用 NpgSql 连接字符串。
  • 只需输入 PgBouncer 服务器的主机/端口,而不是数据库服务器的主机/端口。
  • 我的连接字符串是 但它给了我错误“pgbouncer 无法连接到服务器(年龄 = 0)”。

标签: c# postgresql npgsql pgbouncer


【解决方案1】:

将 pgbouncer 与 Npgsql 一起使用只是意味着让 Npgsql 直接连接到 pgbouncer 而不是 PostgreSQL - 您需要做的就是为 pgbouncer 提供主机和端口。

请注意,Npgsql 带有一个高效的内置连接池,通常应该首选它 - 确保您有充分的理由使用 pgbouncer 而不是内部池。 Npgsql 池默认开启,如果你想使用 pgbouncer,你应该通过在连接字符串中传递 Pooling=false 来禁用 Npgsql 池。

在 PostgreSQL 中使用连接池而不是 PgBouncer 也很好吗?

这没有任何意义 - PostgreSQL(您的数据库服务器)本身不提供任何池。

【讨论】:

  • 此连接字符串不起作用。正如您所说,Npgsql 带有一个高效的连接池构建,我可以控制最小和最大连接池吗?这真的是我需要的。 npgsql.org/doc/index.html 没有给我任何信息。
  • 看看npgsql.org/doc/connection-string-parameters.html#pooling——当然你可以控制最小值和最大值。关于 pgbouncer,你确定它在 localhost 端口 5432 上运行吗?您似乎直接连接到您的 PostgreSQL(pgbouncer 通常在不同的端口上运行)。
  • [1] 这对我来说很好。我需要测试更多。谢谢你的建议。 [2] PgBouncer 在端口 6432 上运行。我正在连接到 PgBouncer,但它给了我错误“pgbouncer 无法连接到服务器 (age=0)”
  • 太棒了。请注意,您不需要指定 Pooling=true、MinPoolSize=1、MaxPoolSize=100(或 SslMode=Disable)——这些都是默认值。对于您的 PgBouncer 问题,您可能遇到了 PgBouncer 端配置问题。
猜你喜欢
  • 2018-03-29
  • 1970-01-01
  • 2018-01-16
  • 2020-01-16
  • 1970-01-01
  • 2021-03-02
  • 2019-08-23
  • 2017-03-03
  • 2020-08-08
相关资源
最近更新 更多