真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PgBouncer原理該怎么理解

PgBouncer原理該怎么理解,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

相城網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),相城網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為相城1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的相城做網(wǎng)站的公司定做!

PGBOUNCER 有些問(wèn)題是需要更深入的理解的,尤其針對(duì)于postgresql 來(lái)說(shuō)為什么要推薦使用 連接池,而MySQL 為什么沒(méi)有聽(tīng)說(shuō)過(guò)墻裂推薦使用連接池,以及具體怎么操作pgbouncer 都是這次要說(shuō)的話(huà)題。

在使用PostgreSQL 時(shí)連接時(shí)通過(guò)postmaster 來(lái)接受外部對(duì)postgresql的連接。而這樣的方式會(huì)造成每個(gè)連接都會(huì)初始分配不小的內(nèi)存,而這樣的做法遇到大量的高頻率的連接,會(huì)占用大量的內(nèi)存,導(dǎo)致系統(tǒng)性能的問(wèn)題,通用的解決方法當(dāng)然可以通過(guò)程序中所設(shè)置的緩沖池來(lái)解決,但這樣的結(jié)構(gòu),一般是由開(kāi)發(fā)來(lái)控制和設(shè)置的,對(duì)于運(yùn)維和DBA來(lái)說(shuō)屬于黑盒,和不可控的狀態(tài)。所以我們才會(huì)使用數(shù)據(jù)庫(kù)連接池,來(lái)進(jìn)行連接復(fù)用節(jié)省打開(kāi)多余連接的系統(tǒng)資源的消耗。

PgBouncer原理該怎么理解

我們從上面的圖中來(lái)看pgbouncer 大致的工作原理

1  客戶(hù)連接到Pgbouncer 這里需要去驗(yàn)證你連接的數(shù)據(jù)庫(kù)的地址,用戶(hù)名,密碼等信息是否是對(duì)的,如果不對(duì)直接就會(huì)從PgBouncer 中踢出這個(gè)連接,首先在安全性上,就可以將一部分攻擊性的連接屏蔽到外面而與數(shù)據(jù)庫(kù)隔絕。

2  在通過(guò)PgBouncer 第一層后,下面就需要對(duì)連接池和數(shù)據(jù)庫(kù)之間已經(jīng)存在的連接進(jìn)行一個(gè)檢測(cè),首先要確認(rèn)的問(wèn)題是,數(shù)據(jù)庫(kù)連接還有富余的嗎?如果沒(méi)有,會(huì)嘗試開(kāi)新的連接,但大部分穩(wěn)定的時(shí)期中,是可以找到空余的連接。

3  在客戶(hù)端到Pgbouncer 在到數(shù)據(jù)庫(kù)之間的連接打通后,pgbouncer 會(huì)根據(jù)下面的幾種連接的方式來(lái)判斷這個(gè)已經(jīng)存活的連接在何時(shí)被收回到pgbouncer的資源池。

pgbouncer 提供了幾種連接的方式

  • Session pooling: pgbouncer中默認(rèn)的方式 session pooling,連接池中從應(yīng)用創(chuàng)建連接到SESSION 結(jié)束,pgbouncer 會(huì)保持你的這個(gè)連接在連接池中,在SESSION 結(jié)束后,會(huì)將這個(gè)連接復(fù)用給下一個(gè)應(yīng)用連接。

  • Transaction pooling: 這樣的方式與上邊session pooling的連接方式的區(qū)別在于,保持一個(gè)連接的基礎(chǔ)不是一個(gè)session 而是 transaction,事務(wù),一個(gè)事務(wù)結(jié)束后,pgbouncer 就會(huì)將這個(gè)連接復(fù)用給下一個(gè)事務(wù)

  • Statement pooling:第三種的方式是不常用的,判斷一個(gè)連接的釋放和使用的評(píng)判條件是一條SQL語(yǔ)句執(zhí)行完畢。

4  有一種情況是pgbouncer 的連接池已經(jīng)滿(mǎn)了,同時(shí)也不能在去開(kāi)新的連接了,在這樣的情況下,就會(huì)產(chǎn)生一個(gè) wait login 的情況,連接進(jìn)入了等待的list

5  另外還有一種情況,就是連接已經(jīng)和pgbouncer 進(jìn)行了連接和交互,但目前pgbouncer 到 數(shù)據(jù)庫(kù)的連接不能去開(kāi)新的連接,同時(shí)目前也沒(méi)有活動(dòng)的連接可以使用,則這時(shí)存在在pgbouncer的 連接也需要等待,等待空閑的連接使用。

OK 大致的原理是這樣的(如果有問(wèn)題可以加微信,一起學(xué)習(xí))

下面就回到pgbouncer 的操作和配置上來(lái)

在安裝完pgbouncer 后,會(huì)產(chǎn)生一個(gè)虛擬的數(shù)據(jù)庫(kù) pgbouncer ,通過(guò)這個(gè)數(shù)據(jù)庫(kù)可以連接連接池的情況。

舉例:我們?cè)谀康膸?kù)建立一個(gè)admin的數(shù)據(jù)庫(kù),并且在配置文件中增加連接admin 數(shù)據(jù)庫(kù)的標(biāo)簽

并且在 userlist.txt 中添加 用于連接的用戶(hù)名和密碼

PgBouncer原理該怎么理解

在pgbouncer 庫(kù)中執(zhí)行 reload 的命令,加載新的配置

PgBouncer原理該怎么理解

連接pgbouncer 并查看日志

PgBouncer原理該怎么理解

輸入命令查看當(dāng)前的連接池狀態(tài)

PgBouncer原理該怎么理解

在pgbouner 的ini 文件中有一些比較重要的參數(shù)是可以調(diào)節(jié)的,例如

max_client_conn 調(diào)節(jié)最大的可以接受的連接數(shù)

default_pool_size 默認(rèn)的連接池的可以并發(fā)的連接

PgBouncer原理該怎么理解

以及緩沖池的hold connection 的方式

PgBouncer原理該怎么理解

同時(shí)也可以為每個(gè)數(shù)據(jù)庫(kù)或每個(gè)用戶(hù)設(shè)置最大的連接等信息

所以postgresql 如果在一個(gè)類(lèi)似 MYSQL 的使用環(huán)境中,多連接,短連接,這樣的情況下,pgbouncer 將是postgresql 的一個(gè)保護(hù)層,避免頻繁的開(kāi)啟連接造成的資源消耗。

看完上述內(nèi)容,你們掌握PgBouncer原理該怎么理解的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)站標(biāo)題:PgBouncer原理該怎么理解
分享地址:http://weahome.cn/article/jgiejp.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部