溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PostgreSQL與Pgbouncer對(duì)比使用

發(fā)布時(shí)間:2021-09-04 14:49:01 來(lái)源:億速云 閱讀:146 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“PostgreSQL與Pgbouncer對(duì)比使用”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

數(shù)據(jù)庫(kù)的連接池,眾所周知沒(méi)有不需要的,所以對(duì)于數(shù)據(jù)庫(kù)的連接池給出答案,一定是需要的。

在給出答案的同時(shí),如果有人問(wèn)你為什么要連接池,到底連接池起到什么作用,Postgresql 到底那個(gè)連接池用的不錯(cuò)?  如果你一時(shí)回答不了這些問(wèn)題,follow me .

首先我們假設(shè),如果我們的數(shù)據(jù)庫(kù)沒(méi)有連接池會(huì)怎么樣?

數(shù)據(jù)庫(kù)在沒(méi)有任何連接池的情況下,應(yīng)用程序必須直接訪問(wèn)數(shù)據(jù)庫(kù)來(lái)建立連接。當(dāng)然我們可能認(rèn)為這是連接到數(shù)據(jù)庫(kù)快速的方法,可是到底是這樣的嗎?你在打開(kāi)一個(gè)和數(shù)據(jù)庫(kù)直接的連接,說(shuō)明本身數(shù)據(jù)庫(kù)沒(méi)有給你開(kāi)啟一個(gè)連接,而如此的情況下打開(kāi)的一個(gè)連接的消耗,關(guān)閉一個(gè)連接的消耗,或者你使用加密的連接,還要有其他相關(guān)的消耗,而這樣的消耗,伴隨著你打開(kāi)的連接越多,則消耗的就越多。尤其是互聯(lián)網(wǎng)上的一些短連接,可能同時(shí)并發(fā)的連接多,但占用這個(gè)連接的時(shí)間很短。這就會(huì)引起另一個(gè)問(wèn)題,你設(shè)置的連接數(shù)和突入起來(lái)的連接數(shù)不匹配的情況,最后就會(huì)造成拒絕連接的問(wèn)題。

所以這就對(duì)數(shù)據(jù)庫(kù)的連接提出一個(gè)問(wèn)題,復(fù)用,連接的復(fù)用對(duì)數(shù)據(jù)庫(kù)非常重要,這可以降低某些快速連接,快速斷開(kāi)的連接的數(shù)據(jù)庫(kù)訪問(wèn)對(duì)數(shù)據(jù)庫(kù)性能的消耗和產(chǎn)生的一些不必要的麻煩。

說(shuō)到這里如果你是 developer 估計(jì)很快會(huì)對(duì)我下面的東西失去興趣,因?yàn)槟銜?huì)說(shuō),我有連接池,每個(gè)程序的框架都有連接池,我不需要你的連接池。

really ? 你們的那些叫 Framework pooling  我今天說(shuō)的是Persistent 連接與standlone 連接池。

為什么我會(huì)提出這個(gè)問(wèn)題,因?yàn)橐粋€(gè)數(shù)據(jù)庫(kù)不可能僅僅接受你一個(gè)程序的連接,而一個(gè)程序必然應(yīng)該有自己的連接池,但一個(gè)數(shù)據(jù)庫(kù)可不僅僅為你一個(gè)應(yīng)用的程序服務(wù),所以當(dāng)數(shù)據(jù)庫(kù)接受多個(gè)從程序來(lái)的連接,本身對(duì)數(shù)據(jù)庫(kù)的保護(hù)在哪里?

PG 在接受連接的時(shí)候,會(huì)分配出一些內(nèi)存已應(yīng)對(duì)連接帶來(lái)的一些數(shù)據(jù)的使用的針對(duì)這個(gè)連接的內(nèi)存消耗,其實(shí)別的數(shù)據(jù)庫(kù)也是一樣。PGA  SGA 這樣的概念在 PG 中也是存在的。

所以過(guò)多的連接必然會(huì)消耗PGA,導(dǎo)致內(nèi)存出現(xiàn)泄露,導(dǎo)致一些重大的數(shù)據(jù)庫(kù)性能和安全的問(wèn)題。

通過(guò)軟件的架構(gòu)的連接池對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接(圖一)

PostgreSQL與Pgbouncer對(duì)比使用

采用軟件連接池的方式對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接(圖二)

PostgreSQL與Pgbouncer對(duì)比使用

目前的主要的PostgreSQL的連接池主要有PGPOOL-II  和 PgBouncer

兩種,PgBouncer. 與 PGPOOL 對(duì)比 PgBouncer 的名氣要小很多,其實(shí)他的功能對(duì)比 PGPOOL 也是要精簡(jiǎn)的,那為什么推薦 PgBouncer 而不是PGPOOL,主要是PgBouncer 在連接池方面做的不比PGPOOL-II 要差,并且安裝配置管理都要更為簡(jiǎn)單,配合 Repmgr 可以進(jìn)行 PostgreSQL 超級(jí)高可用模式,這算是PostgreSQL 的一種高可用的解決方案。

 安裝是很簡(jiǎn)單的

$ ./configure --prefix=/usr/local --with-libevent=libevent-prefix
$ make
$ make install

廢話不說(shuō)我們先開(kāi)始配置先使用起來(lái)

我們配置幾點(diǎn)   1 2 3

1  建立一個(gè)連接當(dāng)前數(shù)據(jù)庫(kù)的賬戶

2  配置配置文件

3  配置賬戶文件

PgBouncer 有一個(gè)配置文件 pgbouncer.ini  還有一個(gè)用戶賬戶文件  userlist.txt

配置的ini 文件有兩塊,一塊是database 一塊是 pgbouncer database 是配置一個(gè)連接實(shí)際數(shù)據(jù)庫(kù)的認(rèn)證,另一個(gè)是配置pgbouncer 監(jiān)聽(tīng)的信息以及一些基本的配置

[databases]

test_database = host=192.168.198.123 port=5432 dbname=postgre user=admin password='password'

[pgbouncer]

listen_port = 1818

listen_addr = 192.168.198.123

auth_type = md5

auth_file = /usr/local/pgbouncer/share/doc/pgbouncer/userlist.txt

logfile = /usr/local/pgbouncer/pgbouncer.log

pidfile =  /usr/local/pgbouncer/pgbouncer.pid

admin_users = admin

pool_mode = Transaction

然后我們?cè)趗serlist.txt 文件中將用以連接服務(wù)器的賬戶和密碼填入

Ok我們可以通過(guò)pgbouncer 來(lái)連接到 PG

PostgreSQL與Pgbouncer對(duì)比使用

上面啟動(dòng)pgbouncer 

然后我們嘗試,登錄到數(shù)據(jù)庫(kù)中

 psql -h 192.168.198.123 -p 1818 -U admin test_database

在登錄后,我們可以查看pgbouncer 本身的數(shù)據(jù)庫(kù),里面有一些命令是pgbouncer 獨(dú)有的。

PostgreSQL與Pgbouncer對(duì)比使用

通過(guò)一些命令我們可以了解到服務(wù)器的一些配置情況

PostgreSQL與Pgbouncer對(duì)比使用

而最終的問(wèn)題是,使用PGBOUNCER 到底有什么好處

1 pg現(xiàn)在有5個(gè)連接通過(guò)PG 連入 實(shí)體服務(wù)器

PostgreSQL與Pgbouncer對(duì)比使用

2 實(shí)體服務(wù)器現(xiàn)在拋出系統(tǒng)的連接,以及本地的連接,真正外部的連接只有4個(gè)

PostgreSQL與Pgbouncer對(duì)比使用

這說(shuō)明數(shù)據(jù)庫(kù)接受的連接和實(shí)際連接數(shù)據(jù)庫(kù)的客戶端是有出入的,實(shí)際連接的客戶端的數(shù)據(jù)量要大于數(shù)據(jù)庫(kù)體現(xiàn)的連接數(shù)據(jù)庫(kù)的量,說(shuō)明Pgbouncer起到了連接池的作用。

“PostgreSQL與Pgbouncer對(duì)比使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI