数据库连接池完成原理ITeye - 牛牛娱乐

数据库连接池完成原理ITeye

2019年02月21日10时10分20秒 | 作者: 谷梦 | 标签: 数据库,运用,体系 | 浏览: 1358

数据库衔接池的基本原理是在内部目标池中保护必定数量的数据库衔接,并对外露出数据库衔接获取和回来办法。如:

外部运用者可经过getConnection 办法获取衔接,运用结束后再经过releaseConnection 办法将衔接回来,留意此刻衔接并没有封闭,而是由衔接池办理器回收,并为下一次运用做好预备。

数据库衔接池技能带来的优势:

1. 资源重用

因为数据库衔接得到重用,防止了频频创立、开释衔接引起的很多功能开支。在削减体系耗费的基础上,另一方面也增进了体系运转环境的平稳性(削减内存碎片以及数据库暂时进程/线程的数量)。

2. 更快的体系呼应速度

数据库衔接池在初始化进程中,往往现已创立了若干数据库衔接置于池中备用。此刻衔接的初始化作业均已完结。关于事务恳求处理而言,直接运用现有可用衔接,防止了数据库衔接初始化和开释进程的时刻开支,然后缩减了体系全体呼应时刻。

3. 新的资源分配手法

关于多运用同享同一数据库的体系而言,可在运用层经过数据库衔接的装备,完成数据库衔接池技能,几年钱或许仍是个新鲜论题,关于现在的事务体系而言,假如规划中还没有考虑到衔接池的运用,那么…….快在规划文档中加上这部分的内容吧。某一运用最大可用数据库衔接数的约束,防止某一运用独占一切数据库资源。

4. 一致的衔接办理,防止数据库衔接走漏

在较为齐备的数据库衔接池完成中,可根据预先的衔接占用超时设定,强制回收被占用衔接。然后防止了惯例数据库衔接操作中或许呈现的资源走漏。


package test;
import java.sql.*;
import java.util.*;
public class DBConnpool
 private int inUse = 0;
 private Vector Connection connections = new Vector Connection 
 private String poolname = "dbconnpool";
 private String dbid = "jdbc:mysql://localhost:3306/teasystem";
 private String drivername = "com.mysql.jdbc.Driver";
 private String username = "root";
 private String password = "123";
 private int maxconn = 5000;
 public DBConnpool(){}
 public void setdbid(String dbid)
 this.dbid = dbid;
 public void setusername(String username)
 this.username = username;
 public void setpassword(String password)
 this.password = password;
 public void setmaxconn(int maxconn)
 this.maxconn = maxconn;
 public String getdbid()
 return dbid;
 public String getusername()
 return username;
 public String getpassword()
 return password;
 public int getmaxconn()
 return maxconn;
 //将衔接返还给衔接池
 public synchronized void reConnection(Connection conn)
 Connection con = conn;
 connections.addElement(con);
 inUse;
 //从衔接池获取一个衔接
 public synchronized Connection getConnection()
 Connection con = null;
 if(connections.size() 0)
 con = (Connection)connections.elementAt(0);
 connections.removeElementAt(0);
 try{
 if(con.isClosed())
 con = getConnection();
 }catch(Exception e){
 e.printStackTrace();
 }else if(maxconn  0||inUse maxconn)
 con = newConnection();
 if(con != null)
 inUse++;
 return con;
 private Connection newConnection()
 Connection con = null;
 try{
 Class.forName(drivername);
 con = DriverManager.getConnection(dbid,username,password);
 }catch(Exception e){
 e.printStackTrace();
 return null;
 return con;
 public synchronized void closeConn()
 Enumeration allConnections = connections.elements();
 while(allConnections.hasMoreElements())
 Connection con = (Connection)allConnections.nextElement();
 try{
 con.close();
 }catch(SQLException e){
 e.printStackTrace();

运用衔接池,把暂时不运用的链接放入衔接池,到需求运用的时分,从衔接池中取出链接运用


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    数据库连接池完成原理ITeye

    数据库,运用,体系
  • 2

    数据库连接符ITeye

    联系,区别,数据库
  • 3

    Informix ODBC设置ITeye

    东西,装备,官方网站
  • 4

    ORACLE的阻隔等级ITeye

    业务,修正,句子
  • 5
  • 6
  • 7

    Hibernate的查询方法sohu

    代码,目标,运用
  • 8

    oracle目标权限dongfang

    权限,用户,目标
  • 9
  • 10

    varchar2与char的格局问题sohu

    长度,代码,数据库