連線池 一種高效能的解決方案

2021-09-01 07:37:36 字數 1632 閱讀 5232

最近在做乙個移動的開發專案,整個專案兼有後台和客戶端,客戶端是安裝在android終端上的,需要和伺服器端進行龐大的資料互動。之前雖然有做過一些web端的資料庫程式設計,但是還知識停留在了練習和學習的水平上,有很多現實的問題並沒有考慮非常多。但是這次接觸的是乙個商業專案,而且預估的使用者群是乙個非常龐大的群體,所以我們不能忽視使用者的操作感受,不能讓使用者有太久的等待,這樣是不符合一款優秀產品設計初衷的,而且也是背離市場的。

經過一位大牛學長的講解後,對連線池的強大深感膜拜。。。。orz。。。

so,接下來就是要好好研究一下連線池的原理了,這樣我們才能更好的學以致用

首先我們需要來說一下連線池的優勢和有點:

1.減少連線建立時間

雖然與其它資料庫相比 gbase 提供了較為快速連線功能,但是建立新的 jdbc 連線仍會招致網路和 jdbc 驅動的開銷。如果這類連線是「迴圈」使用的,使用該方式這些花銷就可避免。  2.簡化的程式設計模式當使用連線池時,每乙個單獨的執行緒能夠像建立了乙個自己的 jdbc 連線一樣操作,允許使用者直接使用jdbc程式設計技術。  3.受控的資源使用如果使用者不使用連線池,而是每當執行緒需要時建立乙個新的連線,那麼使用者的應用程式的資源使用會產生非常大的浪費並且可能會導致高負載下的異常發生。  注意,每個連到 gbase 的連線在客戶端和伺服器端都有花銷(記憶體,cpu,上下文切換等等)。每個連線均會對應用程式和 gbase 伺服器的可用資源帶來一定的限制。不管這些連線是否在做有用的工作,仍將使用這些資源中的相當一部分。  連線池能夠使效能最大化,同時還能將資源利用控制在一定的水平之下,如果超過該水平,應用程式將崩潰而不僅僅是變慢。

看到如此諸多優點,可見連線池在大資料模型中還是能夠顯著提高效能的。

在實際應用開發中,特別是在web應用系統中,如果jsp、servlet或ejb使用jdbc直接訪問資料庫中的資料,每一次資料訪問請求都必須經歷建立資料庫連線、開啟資料庫、訪問資料和關閉資料庫連線等步驟,而連線並開啟資料庫是一件既消耗資源又費時的工作,如果頻繁發生這種資料庫操作,系統的效能必然會急劇下降,甚至會導致系統崩潰。資料庫連線池技術是解決這個問題最常用的方法,在許多應用程式伺服器(例如:weblogic,websphere,jboss)中,基本都提供了這項技術,無需自己程式設計,但是,深入了解這項技術是非常必要的。

資料庫連線池技術的思想非常簡單,將資料庫連線作為物件儲存在乙個vector物件中,一旦資料庫連線建立後,不同的資料庫訪問請求就可以共享這些連線,這樣,通過復用這些已經建立的資料庫連線,可以克服上述缺點,極大地節省系統資源和時間。  資料庫連線池的主要操作如下:  (1)建立資料庫連線池物件(伺服器啟動)。  (2)按照事先指定的引數建立初始數量的資料庫連線(即:空閒連線數)。  (3)對於乙個資料庫訪問請求,直接從連線池中得到乙個連線。如果資料庫連線池物件中沒有空閒的連線,且連線數沒有達到最大(即:最大活躍連線數),建立乙個新的資料庫連線。  (4)訪問資料庫。  (5)關閉資料庫,釋放所有資料庫連線(此時的關閉資料庫連線,並非真正關閉,而是將其放入空閒佇列中。如實際空閒連線數大於初始空閒連線數則釋放連線)。  (6)釋放資料庫連線池物件(伺服器停止、維護期間,釋放資料庫連線池物件,並釋放所有連線)。

連線池給我們在設計大使用者連線處理時提供了有效的解決方案,能夠在一定資源耗費程度上給我們的專案提供最好的使用者體驗和軟體的穩定性,所以連線池確實是乙個好東西。。。

一種高效能定點數方案

一種高效能定點數方案 1,原理 int32表示乙個浮點數,32位符號位,3111位表示整數,101表示小數部分。則小數可表示精度為1 210 整數表示範圍為 221 2 21 大概正負209萬左右。可根據需求調整整數和小數部分位數,也可使用int64來儲存獲得更大表示範圍和更高精度。2,公式 設in...

druid連線池獲取不到連線的一種情況

資料來源一開始配置 jdbc.initialsize 1 jdbc.minidle 1 jdbc.maxactive 5 程式執行一段時間後,執行查詢拋如下異常 exception org.mybatis.spring.mybatissystemexception nested exception ...

sql備份的一種解決方案

1 新建檔案,備份資料庫.bat 內容 rem servername是伺服器名稱,需要替換為實際伺服器名稱 rem net start命令可啟動backupserver,避免backupserver被意外關閉後導致自動dump失敗 net start mssqlserver isql u user ...