Products
GG网络技术分享 2025-11-21 01:01 8
哇,数据库连接池是个啥?轻巧松说就像一个仓库,里面有hen许多门钥匙,每把钥匙douNeng打开一扇门,也就是一个数据库连接。我们不需要每次需要门的时候dou去找钥匙,而是直接从仓库里拿一把钥匙,用完后再放回去,这样就方便许多了。

哎呀,不用数据库连接池就像每次去开门dou要去找钥匙,太麻烦了。先说说得打开门,然后得找到钥匙,然后才Neng开门,再说说还要把钥匙放回去。这玩意儿过程就像TCP建立连接的三次握手、 MySQL认证的三次握手、真实正的SQL施行、MySQL的关闭、TCP的四次握手关闭,真实是累死个人。
用数据库连接池就像有个仓库, 里面有优良许多把钥匙,我们直接从仓库里拿一把钥匙开门,用完后再放回去。这样就不需要每次dou去找钥匙了 节省了优良许多时候,还让门开的geng迅速,就像连接池事先申请优良相关的数据库连接,然后在之后的SQL操作中会复用这些个数据库连接,操作收尾之后数据库也不会断开连接,而是将数据库对象放回到数据库连接池中。
先说说 材料沉用,就像我们用完钥匙再放回去,不用每次dou去找新鲜钥匙,这样就少许些了性Neng开销。接下来 geng迅速的系统响应速度,基本上原因是连接池在初始化过程中,Yi经创建了若干数据库连接置于池中备用,我们直接用现成的连接,节省了初始化和释放连接的时候。再说说统一的连接管理,就像我们统一管理钥匙,避免了数据库连接泄露的情况。
Ru果服务器CPU是4核i7的,连接池巨大细小得为=)。哎呀,这玩意儿公式怎么这么麻烦,我也不懂,还是让巨大人们去算吧。
90分钟搞懂数据库连接池手艺|linux后台开发
《tcp/ip详解卷一》:150行代码拉开协议栈实现的篇章
学地址:C/C++Linux服务器开发/后台架构师-学视频教程-腾讯课堂
需要C/C++ Linux服务器架构师学资料加qun 获取, 免费分享
下载方式:
db_pool目录下有两个目录,mysql_pool目录为MySQL连接池代码,redis_pool为redis连接池代码
下面介绍mysql_pool
CDBConn解析
概念:代表一个数据连接对象实例
相关成员:
m_pDBPool:该数据库连接对象所属的数据库连接池
构造函数:绑定自己所属于哪个数据库连接池
Init函数:创建数据库连接句柄
CDBPool解析
概念:代表一个数据库连接池
Init函数:常见指定数量的数据库实例句柄,然后添加到m_free_list中,供后面用
GetDBConn函数:用于从空闲队列中返回Neng用的数据库连接句柄
RelDBConn函数:程序用完该数据库句柄之后将句柄放回到空闲队列中
测试之前,将代码中的数据库地址、端口、账号密码等改为自己的
进入MySQL,创建mysql_pool_test数据库
进入到mysql_pool目录下创建一个build目录并进入:
然后输入如下的命令进行编译
之后就会在目录下生成如下的可施行文件
输入如下两条命令进行测试:Nengkan到不用数据库连接池,整个操作耗时4秒左右;用连接池之后整个操作耗时2秒左右,提升了一倍
测试
进入redis,Nengkan到我们新鲜建的key:
连接先建立一些连接,并且这些个连接允许共享,所以呢这样就节省了每次连接的时候开销。Mysql数据库为例,连接池在Tomcat中的配置与用。
创建数据库Student,表student
配置server.xml文件。Tomcat安装目录下conf中server.xml文件。
GlobalNamingResources
Resource
name="jdbc/DBPool";
type="javax.sql.DataSource";
password="";
driverClassName="com.mysql.jdbc.Driver";
maxIdle="";
maxWait="";
username="root";
url="jdbc:mysql://localhost:/student";
maxActive="";
/
name:指定连接池的名称
type:指定连接池的类, 他负责连接池的事务处理
url:指定要连接的数据库
driverClassName:指定连接数据库用的驱动程序
username:数据库用户名
password:数据库密码
maxWait:指定Zui巨大建立连接等待时候,Ru果超出此时候将接到异常
maxIdle:指定连接池中连接的Zui巨大空闲数
maxActive:指定连接池Zui巨大连接数
配置web.xml文件。
web-app
resource-ref
descriptionmysql数据库连接池配置/description
res-ref-namejdbc/DBPool/res-ref-name
res-typejavax.sql.DataSource/res-type
res-authContainer/res-auth
res-sharing-scopeShareable/res-sharing-scope
配置context.xml文件
与server.xml文件所在的位置相同。
Context
ResourceLink
global="jdbc/DBPool";
测试
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
env = new InitialContext.lookup;
//检索指定的对象,返回此上下文的一个新鲜实例
pool = env.lookup;
//得到数据库连接池
if{out.println;}
con = pool.getConnection;
st = con.createStatement;
rs = st.executeQuery;
}catch{out.println);}
Demand feedback