2017-06-26 61 views
-1

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

但问题是,我找不到在C#中连接PgBouncer的方式。如果有人也这样做了,请告诉我。

在PostgreSQL中使用连接池而不是PgBouncer也很好吗?如果是,那么请告诉我如何去做。

感谢

+0

https://pgbouncer.github.io/faq.html#how-to-connect-to-pgbouncer –

+0

尼克我不知道如何使用NpgSql连接字符串,如果我们正在使用PgBouncer。 –

+0

只需输入您的PgBouncer服务器的主机/端口,而不是数据库服务器的主机/端口。 –

回答

2

使用pgbouncer与单纯Npgsql的制作手段Npgsql的直接连接到pgbouncer,而不是PostgreSQL的 - 所有你需要做的是提供主机和端口pgbouncer。

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

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

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

+0

这个连接字符串不起作用。正如你所说Npgsql带有连接池中的高效构建,我可以控制最小和最大连接池吗?这真的是我需要的。 http://www.npgsql.org/doc/index.html不会提供任何信息。 –

+1

看看http://www.npgsql.org/doc/connection-string-parameters.html#pooling - 当然你可以控制最小和最大。关于pgbouncer,你确定它在localhost端口5432上运行吗?您似乎直接连接到PostgreSQL(pgbouncer通常运行在不同的端口上)。 –

+0

[1] 这对我来说很好。我需要测试更多。感谢您的建议。 [2] PgBouncer运行在6432端口。我连接到PgBouncer,但它给我错误“pgbouncer无法连接到服务器(年龄= 0)” –