postgresql為什麼要使用連線池

2021-10-05 01:58:03 字數 632 閱讀 7769

postgres是乙個多程序資料庫,每當有請求接入時,後台就會起動乙個後台程序來接收請求,處理請求,返回結果,在這此過程中會有大量的資源申請,當連線釋放時,也會大量的資源被釋放。pg的資料儲存是使用的系統的,乙個後台程序啟動會有大量的檔案被開啟。申請大量的filehandle。而且pg的服務程序之間的資源有很多資源未共享。程序本身資源申請消耗也比執行緒大的多。在高併發的情景下,不斷的新請求,新連線接入,就會伴隨的大量的資源申請和釋放。真正處理請求的消耗比為處理請求的資源消耗要小的多。打個比方,有很多人排隊進門。如果每個人都要開門,進入,關門。真正進入的時間完全少於開門關門的時間。連線池的作用就是把門開啟,讓每個人順序排隊進入。不需要每個人都開門,關門。如果需要pg在高併發的場景很好的支援應用就需要乙個連線池工具。

pgbouncer是乙個開源的postgres連線池工具。

優點:1.可以提高postgres在高併發環境下的支援。

2.豐富的配置引數,通過以往經驗和不斷嘗試可以得到最合適的場景配置引數。

3.強大postgres的相容性,對於開發者算是透明化。

缺點:1.使用上還不是很人性化。錯誤提示對於新使用者很難判斷問題所在。

2.有些功能還待完善 。

後期我會詳細看下pgbouncer的原始碼,進行整理後對它的原理和使用跨坑進行說明。

為什麼要使用blog

有哥們問我,你為什麼使用blog?我總結了一下,覺得有如下幾個原因。1對自己的督促 有了blog,就會經常記得寫點東西 就會經常翻翻網上的新文章,了解一下新技術,不至於迷失在忙碌的生活中 如果把自己的所感所想所學寫出了,自己對自己也會有個概念,不至於迷迷糊糊 還有,畢竟是掛在網上的文字,心中難免擔心...

為什麼要使用XML

xml 代表擴充套件標記語言 extensible markup language 是由 world wide web consortium w 3c 的 xml工作組定義的。這個工作組是這樣描述該語言的 擴充套件標記語言 xml 是 sgml 的子集,其目標是允許普通的 sgml 在web 上以目...

為什麼要使用Nginx?

有人說這些基準測試是不準確的,因為在這樣那樣的環境下,做的比較不一致。我傾向同意基準測試只是告訴了我們其中一部分情況,你能做的是消除偏見 有人見過所有人都同意乙個基準測試是公平的嗎?我是沒見過。我們投資的一些公司把web平台切換到nginx後,可以顯著的解決擴充套件問題。nginx明顯有效的實現了今...