本篇內(nèi)容介紹了“PostgreSQL與Pgbouncer對比使用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
目前創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、洪雅網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
數(shù)據(jù)庫的連接池,眾所周知沒有不需要的,所以對于數(shù)據(jù)庫的連接池給出答案,一定是需要的。
在給出答案的同時,如果有人問你為什么要連接池,到底連接池起到什么作用,Postgresql 到底那個連接池用的不錯? 如果你一時回答不了這些問題,follow me .
首先我們假設(shè),如果我們的數(shù)據(jù)庫沒有連接池會怎么樣?
數(shù)據(jù)庫在沒有任何連接池的情況下,應(yīng)用程序必須直接訪問數(shù)據(jù)庫來建立連接。當(dāng)然我們可能認(rèn)為這是連接到數(shù)據(jù)庫快速的方法,可是到底是這樣的嗎?你在打開一個和數(shù)據(jù)庫直接的連接,說明本身數(shù)據(jù)庫沒有給你開啟一個連接,而如此的情況下打開的一個連接的消耗,關(guān)閉一個連接的消耗,或者你使用加密的連接,還要有其他相關(guān)的消耗,而這樣的消耗,伴隨著你打開的連接越多,則消耗的就越多。尤其是互聯(lián)網(wǎng)上的一些短連接,可能同時并發(fā)的連接多,但占用這個連接的時間很短。這就會引起另一個問題,你設(shè)置的連接數(shù)和突入起來的連接數(shù)不匹配的情況,最后就會造成拒絕連接的問題。
所以這就對數(shù)據(jù)庫的連接提出一個問題,復(fù)用,連接的復(fù)用對數(shù)據(jù)庫非常重要,這可以降低某些快速連接,快速斷開的連接的數(shù)據(jù)庫訪問對數(shù)據(jù)庫性能的消耗和產(chǎn)生的一些不必要的麻煩。
說到這里如果你是 developer 估計很快會對我下面的東西失去興趣,因為你會說,我有連接池,每個程序的框架都有連接池,我不需要你的連接池。
really ? 你們的那些叫 Framework pooling 我今天說的是Persistent 連接與standlone 連接池。
為什么我會提出這個問題,因為一個數(shù)據(jù)庫不可能僅僅接受你一個程序的連接,而一個程序必然應(yīng)該有自己的連接池,但一個數(shù)據(jù)庫可不僅僅為你一個應(yīng)用的程序服務(wù),所以當(dāng)數(shù)據(jù)庫接受多個從程序來的連接,本身對數(shù)據(jù)庫的保護(hù)在哪里?
PG 在接受連接的時候,會分配出一些內(nèi)存已應(yīng)對連接帶來的一些數(shù)據(jù)的使用的針對這個連接的內(nèi)存消耗,其實別的數(shù)據(jù)庫也是一樣。PGA SGA 這樣的概念在 PG 中也是存在的。
所以過多的連接必然會消耗PGA,導(dǎo)致內(nèi)存出現(xiàn)泄露,導(dǎo)致一些重大的數(shù)據(jù)庫性能和安全的問題。
通過軟件的架構(gòu)的連接池對數(shù)據(jù)庫進(jìn)行連接(圖一)
采用軟件連接池的方式對數(shù)據(jù)庫進(jìn)行連接(圖二)
目前的主要的PostgreSQL的連接池主要有PGPOOL-II 和 PgBouncer
兩種,PgBouncer. 與 PGPOOL 對比 PgBouncer 的名氣要小很多,其實他的功能對比 PGPOOL 也是要精簡的,那為什么推薦 PgBouncer 而不是PGPOOL,主要是PgBouncer 在連接池方面做的不比PGPOOL-II 要差,并且安裝配置管理都要更為簡單,配合 Repmgr 可以進(jìn)行 PostgreSQL 超級高可用模式,這算是PostgreSQL 的一種高可用的解決方案。
安裝是很簡單的
$ ./configure --prefix=/usr/local --with-libevent=libevent-prefix
$ make
$ make install
廢話不說我們先開始配置先使用起來
我們配置幾點 1 2 3
1 建立一個連接當(dāng)前數(shù)據(jù)庫的賬戶
2 配置配置文件
3 配置賬戶文件
PgBouncer 有一個配置文件 pgbouncer.ini 還有一個用戶賬戶文件 userlist.txt
配置的ini 文件有兩塊,一塊是database 一塊是 pgbouncer database 是配置一個連接實際數(shù)據(jù)庫的認(rèn)證,另一個是配置pgbouncer 監(jiān)聽的信息以及一些基本的配置
[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
然后我們在userlist.txt 文件中將用以連接服務(wù)器的賬戶和密碼填入
Ok我們可以通過pgbouncer 來連接到 PG
上面啟動pgbouncer
然后我們嘗試,登錄到數(shù)據(jù)庫中
psql -h 192.168.198.123 -p 1818 -U admin test_database
在登錄后,我們可以查看pgbouncer 本身的數(shù)據(jù)庫,里面有一些命令是pgbouncer 獨有的。
通過一些命令我們可以了解到服務(wù)器的一些配置情況
而最終的問題是,使用PGBOUNCER 到底有什么好處
1 pg現(xiàn)在有5個連接通過PG 連入 實體服務(wù)器
2 實體服務(wù)器現(xiàn)在拋出系統(tǒng)的連接,以及本地的連接,真正外部的連接只有4個
這說明數(shù)據(jù)庫接受的連接和實際連接數(shù)據(jù)庫的客戶端是有出入的,實際連接的客戶端的數(shù)據(jù)量要大于數(shù)據(jù)庫體現(xiàn)的連接數(shù)據(jù)庫的量,說明Pgbouncer起到了連接池的作用。
“PostgreSQL與Pgbouncer對比使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
新聞名稱:PostgreSQL與Pgbouncer對比使用
轉(zhuǎn)載源于:http://jinyejixie.com/article42/gpgihc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、搜索引擎優(yōu)化、移動網(wǎng)站建設(shè)、網(wǎng)站排名、服務(wù)器托管、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)