最近在做一個移動的開發項目,整個項目兼有后臺和客戶端,客戶端是安裝在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)釋放數據庫連接池對象(服務器停止、維護期間,釋放數據庫連接池對象,并釋放所有連接)。 連接池給我們在設計大用戶連接處理時提供了有效的解決方案,能夠在一定資源耗費程度上給我們的項目提供最好的用戶體驗和軟件的穩定性,所以連接池確實是一個好東西。。。
posted on 2012-05-30 00:35
mixer-a 閱讀(1686)
評論(0) 編輯 收藏