您好,登錄后才能下訂單哦!
本篇內容介紹了“PostgreSQL與Pgbouncer對比使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
數據庫的連接池,眾所周知沒有不需要的,所以對于數據庫的連接池給出答案,一定是需要的。
在給出答案的同時,如果有人問你為什么要連接池,到底連接池起到什么作用,Postgresql 到底那個連接池用的不錯? 如果你一時回答不了這些問題,follow me .
首先我們假設,如果我們的數據庫沒有連接池會怎么樣?
數據庫在沒有任何連接池的情況下,應用程序必須直接訪問數據庫來建立連接。當然我們可能認為這是連接到數據庫快速的方法,可是到底是這樣的嗎?你在打開一個和數據庫直接的連接,說明本身數據庫沒有給你開啟一個連接,而如此的情況下打開的一個連接的消耗,關閉一個連接的消耗,或者你使用加密的連接,還要有其他相關的消耗,而這樣的消耗,伴隨著你打開的連接越多,則消耗的就越多。尤其是互聯網上的一些短連接,可能同時并發的連接多,但占用這個連接的時間很短。這就會引起另一個問題,你設置的連接數和突入起來的連接數不匹配的情況,最后就會造成拒絕連接的問題。
所以這就對數據庫的連接提出一個問題,復用,連接的復用對數據庫非常重要,這可以降低某些快速連接,快速斷開的連接的數據庫訪問對數據庫性能的消耗和產生的一些不必要的麻煩。
說到這里如果你是 developer 估計很快會對我下面的東西失去興趣,因為你會說,我有連接池,每個程序的框架都有連接池,我不需要你的連接池。
really ? 你們的那些叫 Framework pooling 我今天說的是Persistent 連接與standlone 連接池。
為什么我會提出這個問題,因為一個數據庫不可能僅僅接受你一個程序的連接,而一個程序必然應該有自己的連接池,但一個數據庫可不僅僅為你一個應用的程序服務,所以當數據庫接受多個從程序來的連接,本身對數據庫的保護在哪里?
PG 在接受連接的時候,會分配出一些內存已應對連接帶來的一些數據的使用的針對這個連接的內存消耗,其實別的數據庫也是一樣。PGA SGA 這樣的概念在 PG 中也是存在的。
所以過多的連接必然會消耗PGA,導致內存出現泄露,導致一些重大的數據庫性能和安全的問題。
通過軟件的架構的連接池對數據庫進行連接(圖一)
采用軟件連接池的方式對數據庫進行連接(圖二)
目前的主要的PostgreSQL的連接池主要有PGPOOL-II 和 PgBouncer
兩種,PgBouncer. 與 PGPOOL 對比 PgBouncer 的名氣要小很多,其實他的功能對比 PGPOOL 也是要精簡的,那為什么推薦 PgBouncer 而不是PGPOOL,主要是PgBouncer 在連接池方面做的不比PGPOOL-II 要差,并且安裝配置管理都要更為簡單,配合 Repmgr 可以進行 PostgreSQL 超級高可用模式,這算是PostgreSQL 的一種高可用的解決方案。
安裝是很簡單的
$ ./configure --prefix=/usr/local --with-libevent=libevent-prefix
$ make
$ make install
廢話不說我們先開始配置先使用起來
我們配置幾點 1 2 3
1 建立一個連接當前數據庫的賬戶
2 配置配置文件
3 配置賬戶文件
PgBouncer 有一個配置文件 pgbouncer.ini 還有一個用戶賬戶文件 userlist.txt
配置的ini 文件有兩塊,一塊是database 一塊是 pgbouncer database 是配置一個連接實際數據庫的認證,另一個是配置pgbouncer 監聽的信息以及一些基本的配置
[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 文件中將用以連接服務器的賬戶和密碼填入
Ok我們可以通過pgbouncer 來連接到 PG
上面啟動pgbouncer
然后我們嘗試,登錄到數據庫中
psql -h 192.168.198.123 -p 1818 -U admin test_database
在登錄后,我們可以查看pgbouncer 本身的數據庫,里面有一些命令是pgbouncer 獨有的。
通過一些命令我們可以了解到服務器的一些配置情況
而最終的問題是,使用PGBOUNCER 到底有什么好處
1 pg現在有5個連接通過PG 連入 實體服務器
2 實體服務器現在拋出系統的連接,以及本地的連接,真正外部的連接只有4個
這說明數據庫接受的連接和實際連接數據庫的客戶端是有出入的,實際連接的客戶端的數據量要大于數據庫體現的連接數據庫的量,說明Pgbouncer起到了連接池的作用。
“PostgreSQL與Pgbouncer對比使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。