收藏:http://chinaestone.javaeye.com/blog/607083
自己写了一个Jdbc连接mysql的例子,算是复习了一下Jdbc的用法。
整个例子的源码如下:
-
- import java.sql.Connection;
-
- public class Database{
-
- private Connection connection;
-
- public Database(){
- Class.forName("com.mysql.jdbc.Driver").newInstance();
- }
-
-
-
- public excuteQuery(){
- String url ="jdbc:mysql://localhost:3306/mysql?user=root&password=654321";
- connection = DriverManeger.getConnection(url);
- Statement statement = connection.createStatement();
- String sql ="select * from help_relation where help_topic_id<100";
- ResultSet rs = statement.executeQuery();
-
- while(rs.next){
- System.out.printlnl(rs.getString(1));
- }
- }
-
-
- public static void main(String[] args){
- new Database().executeQuery();
- }
- }
-
到此,jdbc连接mysql数据的工作已经完成了,但是这里我突然想出了一个问题:为什么所有的数据在大负载的情况下都要用连接池?
现在通过这个简单的例子可以清楚的看到,如过每次我们请求数据时,都要创建一个Database对象,通过该对象提供的方法来查询数据库,该对象中封装了一个Connection,这个连接用于连
接msyql,相当于在mysql和java之间建立了一条数据的传输通道。并且是一个独立的线程。如果有很多Connection操作同时连接到mysql的时候,就需要建立很多的Connection,这样的话
无疑是浪费了很多的Connection实例。并且用可能引起内存泄漏,为了避免这样情况的方法,使用连接池可以缓解数据库的压力。如果不添加连接池,最有可能影响数据库性能的一种现象
是:当msyql的负载(connection)已满,当前已经连接到msyql上的数据库的Connection都在等待mysql返回数据,如果再有新的连接进来,也只能处于等待状态,当mysql中已有的连接完成
查询退出后,新的连接才能进入到mysql数据库中。这时新进来的Connection需要重新创建连接,无法复用已经创建的连接对象。对于数据库来说,创建和断开连接是比较耗费资源的。因此使
用连接池来重复使用已经创建好的对象可以极大节省数据库的查询时间。