收藏:http://chinaestone.javaeye.com/blog/607083


自己寫了一個(gè)Jdbc連接
mysql的例子,算是復(fù)習(xí)了一下Jdbc的用法。

 

整個(gè)例子的源碼如下:
Java代碼 
  1. //------------------------------------------------------------------------------------  
  2. import java.sql.Connection;  
  3.    
  4. public class Database{  
  5.    
  6.    private Connection connection;  
  7.      
  8.    public Database(){  
  9.        Class.forName("com.mysql.jdbc.Driver").newInstance();   // 注冊(cè)驅(qū)動(dòng)  
  10.    }  
  11.      
  12.    // 查詢help_relation中help_topic_id小于100的數(shù)據(jù),  
  13.    // 并打印輸出  
  14.    public excuteQuery(){  
  15.        String url ="jdbc:mysql://localhost:3306/mysql?user=root&password=654321";  
  16.        connection = DriverManeger.getConnection(url);  
  17.        Statement statement = connection.createStatement();  
  18.        String sql ="select * from help_relation where help_topic_id<100";  
  19.        ResultSet rs = statement.executeQuery();  
  20.    
  21.         while(rs.next){  
  22.                System.out.printlnl(rs.getString(1));  
  23.          }     
  24.    }  
  25.    
  26.       // 測(cè)試主函數(shù)  
  27.    public static void main(String[] args){  
  28.                new Database().executeQuery();  
  29.    }  
  30. }  
  31. //-----------------------------------------------------------------------------------  
 
到此,jdbc連接mysql數(shù)據(jù)的工作已經(jīng)完成了,但是這里我突然想出了一個(gè)問題:為什么所有的數(shù)據(jù)在大負(fù)載的情況下都要用連接池?
現(xiàn)在通過這個(gè)簡(jiǎn)單的例子可以清楚的看到,如過每次我們請(qǐng)求數(shù)據(jù)時(shí),都要?jiǎng)?chuàng)建一個(gè)Database對(duì)象,通過該對(duì)象提供的方法來查詢數(shù)據(jù)庫,該對(duì)象中封裝了一個(gè)Connection,這個(gè)連接用于連
接msyql,相當(dāng)于在mysql和java之間建立了一條數(shù)據(jù)的傳輸通道。并且是一個(gè)獨(dú)立的線程。如果有很多Connection操作同時(shí)連接到mysql的時(shí)候,就需要建立很多的Connection,這樣的話
無疑是浪費(fèi)了很多的Connection實(shí)例。并且用可能引起內(nèi)存泄漏,為了避免這樣情況的方法,使用連接池可以緩解數(shù)據(jù)庫的壓力。如果不添加連接池,最有可能影響數(shù)據(jù)庫性能的一種現(xiàn)象
是:當(dāng)msyql的負(fù)載(connection)已滿,當(dāng)前已經(jīng)連接到msyql上的數(shù)據(jù)庫的Connection都在等待mysql返回?cái)?shù)據(jù),如果再有新的連接進(jìn)來,也只能處于等待狀態(tài),當(dāng)mysql中已有的連接完成
查詢退出后,新的連接才能進(jìn)入到mysql數(shù)據(jù)庫中。這時(shí)新進(jìn)來的Connection需要重新創(chuàng)建連接,無法復(fù)用已經(jīng)創(chuàng)建的連接對(duì)象。對(duì)于數(shù)據(jù)庫來說,創(chuàng)建和斷開連接是比較耗費(fèi)資源的。因此使
用連接池來重復(fù)使用已經(jīng)創(chuàng)建好的對(duì)象可以極大節(jié)省數(shù)據(jù)庫的查詢時(shí)間。