2017-06-26 60 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)」 –